{\rtf1\ansi\deff1\adeflang1025
{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\fswiss\fprq2\fcharset0 MS Sans Serif;}{\f2\fswiss\fprq2\fcharset0 MS Sans Serif;}{\f3\fmodern\fprq1\fcharset0 Courier New;}{\f4\froman\fprq2\fcharset0 Times New Roman;}{\f5\fnil\fprq2\fcharset2 Wingdings;}{\f6\froman\fprq2\fcharset2 Symbol;}{\f7\fswiss\fprq2\fcharset0 Arial;}{\f8\fnil\fprq0\fcharset0 OCR A Extended;}{\f9\fnil\fprq0\fcharset0 Tahoma;}}
{\colortbl;\red0\green0\blue0;\red255\green0\blue0;\red0\green0\blue255;\red128\green0\blue128;\red51\green51\blue153;\red51\green102\blue255;\red0\green0\blue128;\red0\green102\blue0;\red128\green128\blue128;}
{\stylesheet{\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\snext1 Default;}
{\s2\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\sbasedon1\snext2 Text body;}
{\s3\li284\ri0\lin284\rin0\fi-284\sb120\sa120\cf0\tx284{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1031\loch\f1\fs24\lang1033\sbasedon6\snext3 List;}
{\s4\sb120\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af9\afs20\lang1033\ai\ltrch\dbch\af1\afs20\langfe1033\ai\loch\f1\fs20\lang1033\i\sbasedon1\snext4 Caption;}
{\s5\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af9\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\sbasedon1\snext5 Index;}
{\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033\sbasedon1\snext6 Normal;}
{\s7\sb100\sa100\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs36\lang1033\ab\ltrch\dbch\afs36\langfe1033\ab\loch\fs36\lang2057\b\sbasedon6\snext7 heading 2;}
{\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\sbasedon6\snext8 footnote text;}
{\s9\cf2\qc\tx1134{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs18\lang1033\ab\ltrch\dbch\af1\afs18\langfe1024\ab\loch\f1\fs18\lang1024\b\sbasedon6\snext9 Internal notes;}
{\s10\sb60\sa240\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ab\ltrch\dbch\af1\afs24\langfe1033\ab\loch\f1\fs24\lang1033\b\sbasedon6\snext6 Heading;}
{\s11\cf0\keep\tx1134\tx2552{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang1033\ltrch\dbch\af3\afs20\langfe1024\loch\f3\fs20\lang1024\sbasedon6\snext11 Example;}
{\s12\li567\ri0\lin567\rin0\fi-567\sa240\cf0\tx567{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\sbasedon6\snext12 Step-by-Step;}
{\s13\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ab\ltrch\dbch\af1\afs24\langfe1033\ab\loch\f1\fs24\lang1033\b\sbasedon6\snext6 Sub-Heading #1;}
{\s14\cf0\ul{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\sbasedon6\snext6 Sub-Heading #2;}
{\s15\keepn\cf0\tx1134{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\sbasedon6\snext6 Nonscrolling region;}
{\s16\sb60\sa120\keepn\cf0\keep{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\sbasedon10\snext17 Nonscrolling Heading;}
{\s17\sa120\cf0\tx1134\tx2268\tx3402\tx4536{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\sbasedon16\snext6 Nonscrolling Sub-Heading;}
{\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\afs20\langfe1033\loch\f1\fs20\lang1036\sbasedon6\snext18 endnote text;}
{\s19\sb100\sa100\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs24\lang1033\ltrch\dbch\afs24\langfe1033\loch\fs24\lang2057\sbasedon6\snext19 Normal (Web);}
{\s20\li0\ri720\lin0\rin720\fi0\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\sbasedon6\snext20 Body Text;}
{\s21\li283\ri0\lin283\rin0\fi-283\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\afs20\langfe1033\loch\f1\fs20\lang1033\sbasedon1\snext21 Footnote;}
{\s22\li283\ri0\lin283\rin0\fi-283\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\afs20\langfe1033\loch\f1\fs20\lang1033\sbasedon1\snext22 Endnote;}
{\s23\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\sbasedon2\snext23 Table Contents;}
{\s24\cf0\qc{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ai\ab\ltrch\dbch\af1\afs24\langfe1033\ai\ab\loch\f1\fs24\lang1033\i\b\sbasedon23\snext24 Table Heading;}
{\*\cs26\cf0\chcbpat1\rtlch\af0\afs16\lang1033\ab\ltrch\dbch\af0\afs16\langfe1033\ab\loch\f0\fs16\lang1033\b RTF_Num 2 1;}
{\*\cs27\cf0\chcbpat1\rtlch\af1\afs24\lang1033\ltrch\dbch\af0\afs24\langfe1033\loch\f0\fs24\lang1033 RTF_Num 3 1;}
{\*\cs28\cf0\chcbpat1\rtlch\af3\afs24\lang1033\ltrch\dbch\af3\afs24\langfe1033\loch\f3\fs24\lang1033 RTF_Num 3 2;}
{\*\cs29\cf0\chcbpat1\rtlch\af5\afs24\lang1033\ltrch\dbch\af5\afs24\langfe1033\loch\f5\fs24\lang1033 RTF_Num 3 3;}
{\*\cs30\cf0\chcbpat1\rtlch\af6\afs24\lang1033\ltrch\dbch\af6\afs24\langfe1033\loch\f6\fs24\lang1033 RTF_Num 3 4;}
{\*\cs31\cf0\chcbpat1\rtlch\af3\afs24\lang1033\ltrch\dbch\af3\afs24\langfe1033\loch\f3\fs24\lang1033 RTF_Num 3 5;}
{\*\cs32\cf0\chcbpat1\rtlch\af5\afs24\lang1033\ltrch\dbch\af5\afs24\langfe1033\loch\f5\fs24\lang1033 RTF_Num 3 6;}
{\*\cs33\cf0\chcbpat1\rtlch\af6\afs24\lang1033\ltrch\dbch\af6\afs24\langfe1033\loch\f6\fs24\lang1033 RTF_Num 3 7;}
{\*\cs34\cf0\chcbpat1\rtlch\af3\afs24\lang1033\ltrch\dbch\af3\afs24\langfe1033\loch\f3\fs24\lang1033 RTF_Num 3 8;}
{\*\cs35\cf0\chcbpat1\rtlch\af5\afs24\lang1033\ltrch\dbch\af5\afs24\langfe1033\loch\f5\fs24\lang1033 RTF_Num 3 9;}
{\*\cs36\cf0\chcbpat1\rtlch\af1\afs24\lang1033\ab\ltrch\dbch\af1\afs24\langfe1033\ab\loch\f1\fs24\lang1033\b RTF_Num 4 1;}
{\*\cs37\cf0\chcbpat1\rtlch\af1\afs24\lang1033\ltrch\dbch\af0\afs24\langfe1033\loch\f0\fs24\lang1033 RTF_Num 5 1;}
{\*\cs38\cf0\chcbpat1\rtlch\af3\afs24\lang1033\ltrch\dbch\af3\afs24\langfe1033\loch\f3\fs24\lang1033 RTF_Num 5 2;}
{\*\cs39\cf0\chcbpat1\rtlch\af5\afs24\lang1033\ltrch\dbch\af5\afs24\langfe1033\loch\f5\fs24\lang1033 RTF_Num 5 3;}
{\*\cs40\cf0\chcbpat1\rtlch\af6\afs24\lang1033\ltrch\dbch\af6\afs24\langfe1033\loch\f6\fs24\lang1033 RTF_Num 5 4;}
{\*\cs41\cf0\chcbpat1\rtlch\af3\afs24\lang1033\ltrch\dbch\af3\afs24\langfe1033\loch\f3\fs24\lang1033 RTF_Num 5 5;}
{\*\cs42\cf0\chcbpat1\rtlch\af5\afs24\lang1033\ltrch\dbch\af5\afs24\langfe1033\loch\f5\fs24\lang1033 RTF_Num 5 6;}
{\*\cs43\cf0\chcbpat1\rtlch\af6\afs24\lang1033\ltrch\dbch\af6\afs24\langfe1033\loch\f6\fs24\lang1033 RTF_Num 5 7;}
{\*\cs44\cf0\chcbpat1\rtlch\af3\afs24\lang1033\ltrch\dbch\af3\afs24\langfe1033\loch\f3\fs24\lang1033 RTF_Num 5 8;}
{\*\cs45\cf0\chcbpat1\rtlch\af5\afs24\lang1033\ltrch\dbch\af5\afs24\langfe1033\loch\f5\fs24\lang1033 RTF_Num 5 9;}
{\*\cs46\cf0\chcbpat1\rtlch\af1\afs16\lang1033\ltrch\dbch\af1\afs16\langfe1033\loch\f1\fs16\lang1033 RTF_Num 6 1;}
{\*\cs47\cf0\chcbpat1\rtlch\af1\afs16\lang1033\ltrch\dbch\af1\afs16\langfe1033\loch\f1\fs16\lang1033 RTF_Num 7 1;}
{\*\cs48\cf0\chcbpat1\rtlch\af0\afs16\lang1033\ab\ltrch\dbch\af0\afs16\langfe1033\ab\loch\f0\fs16\lang1033\b RTF_Num 8 1;}
{\*\cs49\cf0\chcbpat1\rtlch\af1\afs16\lang1033\ltrch\dbch\af1\afs16\langfe1033\loch\f1\fs16\lang1033 RTF_Num 9 1;}
{\*\cs50\cf0\chcbpat1\rtlch\af1\afs24\lang1033\ltrch\dbch\af0\afs24\langfe1033\loch\f0\fs24\lang1033 RTF_Num 10 1;}
{\*\cs51\cf0\chcbpat1\rtlch\af3\afs24\lang1033\ltrch\dbch\af3\afs24\langfe1033\loch\f3\fs24\lang1033 RTF_Num 10 2;}
{\*\cs52\cf0\chcbpat1\rtlch\af5\afs24\lang1033\ltrch\dbch\af5\afs24\langfe1033\loch\f5\fs24\lang1033 RTF_Num 10 3;}
{\*\cs53\cf0\chcbpat1\rtlch\af6\afs24\lang1033\ltrch\dbch\af6\afs24\langfe1033\loch\f6\fs24\lang1033 RTF_Num 10 4;}
{\*\cs54\cf0\chcbpat1\rtlch\af3\afs24\lang1033\ltrch\dbch\af3\afs24\langfe1033\loch\f3\fs24\lang1033 RTF_Num 10 5;}
{\*\cs55\cf0\chcbpat1\rtlch\af5\afs24\lang1033\ltrch\dbch\af5\afs24\langfe1033\loch\f5\fs24\lang1033 RTF_Num 10 6;}
{\*\cs56\cf0\chcbpat1\rtlch\af6\afs24\lang1033\ltrch\dbch\af6\afs24\langfe1033\loch\f6\fs24\lang1033 RTF_Num 10 7;}
{\*\cs57\cf0\chcbpat1\rtlch\af3\afs24\lang1033\ltrch\dbch\af3\afs24\langfe1033\loch\f3\fs24\lang1033 RTF_Num 10 8;}
{\*\cs58\cf0\chcbpat1\rtlch\af5\afs24\lang1033\ltrch\dbch\af5\afs24\langfe1033\loch\f5\fs24\lang1033 RTF_Num 10 9;}
{\*\cs59\cf0\chcbpat1\rtlch\af1\afs24\lang1033\ltrch\dbch\af0\afs24\langfe1033\loch\f0\fs24\lang1033 RTF_Num 11 1;}
{\*\cs60\cf0\chcbpat1\rtlch\af3\afs24\lang1033\ltrch\dbch\af3\afs24\langfe1033\loch\f3\fs24\lang1033 RTF_Num 11 2;}
{\*\cs61\cf0\chcbpat1\rtlch\af5\afs24\lang1033\ltrch\dbch\af5\afs24\langfe1033\loch\f5\fs24\lang1033 RTF_Num 11 3;}
{\*\cs62\cf0\chcbpat1\rtlch\af6\afs24\lang1033\ltrch\dbch\af6\afs24\langfe1033\loch\f6\fs24\lang1033 RTF_Num 11 4;}
{\*\cs63\cf0\chcbpat1\rtlch\af3\afs24\lang1033\ltrch\dbch\af3\afs24\langfe1033\loch\f3\fs24\lang1033 RTF_Num 11 5;}
{\*\cs64\cf0\chcbpat1\rtlch\af5\afs24\lang1033\ltrch\dbch\af5\afs24\langfe1033\loch\f5\fs24\lang1033 RTF_Num 11 6;}
{\*\cs65\cf0\chcbpat1\rtlch\af6\afs24\lang1033\ltrch\dbch\af6\afs24\langfe1033\loch\f6\fs24\lang1033 RTF_Num 11 7;}
{\*\cs66\cf0\chcbpat1\rtlch\af3\afs24\lang1033\ltrch\dbch\af3\afs24\langfe1033\loch\f3\fs24\lang1033 RTF_Num 11 8;}
{\*\cs67\cf0\chcbpat1\rtlch\af5\afs24\lang1033\ltrch\dbch\af5\afs24\langfe1033\loch\f5\fs24\lang1033 RTF_Num 11 9;}
{\*\cs68\cf0\chcbpat1\rtlch\af1\afs24\lang1033\ltrch\dbch\af0\afs24\langfe1033\loch\f0\fs24\lang1033 RTF_Num 12 1;}
{\*\cs69\cf0\chcbpat1\rtlch\af3\afs24\lang1033\ltrch\dbch\af3\afs24\langfe1033\loch\f3\fs24\lang1033 RTF_Num 12 2;}
{\*\cs70\cf0\chcbpat1\rtlch\af5\afs24\lang1033\ltrch\dbch\af5\afs24\langfe1033\loch\f5\fs24\lang1033 RTF_Num 12 3;}
{\*\cs71\cf0\chcbpat1\rtlch\af6\afs24\lang1033\ltrch\dbch\af6\afs24\langfe1033\loch\f6\fs24\lang1033 RTF_Num 12 4;}
{\*\cs72\cf0\chcbpat1\rtlch\af3\afs24\lang1033\ltrch\dbch\af3\afs24\langfe1033\loch\f3\fs24\lang1033 RTF_Num 12 5;}
{\*\cs73\cf0\chcbpat1\rtlch\af5\afs24\lang1033\ltrch\dbch\af5\afs24\langfe1033\loch\f5\fs24\lang1033 RTF_Num 12 6;}
{\*\cs74\cf0\chcbpat1\rtlch\af6\afs24\lang1033\ltrch\dbch\af6\afs24\langfe1033\loch\f6\fs24\lang1033 RTF_Num 12 7;}
{\*\cs75\cf0\chcbpat1\rtlch\af3\afs24\lang1033\ltrch\dbch\af3\afs24\langfe1033\loch\f3\fs24\lang1033 RTF_Num 12 8;}
{\*\cs76\cf0\chcbpat1\rtlch\af5\afs24\lang1033\ltrch\dbch\af5\afs24\langfe1033\loch\f5\fs24\lang1033 RTF_Num 12 9;}
{\*\cs77\cf0\rtlch\afs24\lang1033\ltrch\dbch\afs24\langfe1033\loch\fs24\lang1033\sbasedon78 Default Paragraph Font;}
{\*\cs78\cf0\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 Normal;}
{\*\cs79\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\sbasedon77 footnote reference;}
{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\sbasedon77 endnote reference;}
{\*\cs81\cf3\ul\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\sbasedon77 Hyperlink;}
{\*\cs82\cf4\ul\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\sbasedon77 FollowedHyperlink;}
{\*\cs83\cf0\rtlch\af1\afs24\lang1033\ab\ltrch\dbch\af1\afs24\langfe1033\ab\loch\f1\fs24\lang1033\b\sbasedon77 Strong;}
{\*\cs84\cf0\rtlch\af1\afs20\lang1033\ltrch\dbch\af0\afs20\langfe1033\loch\f3\fs20\lang1033\sbasedon77 HTML Code;}
{\*\cs85\cf7\ul\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 Internet Link;}
{\*\cs86\cf0\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 Footnote Characters;}
{\*\cs87\cf0{\*\updnprop5801}\up10\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 Footnote anchor;}
{\*\cs88\cf0\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 Endnote Characters;}
{\*\cs89\cf0{\*\updnprop5801}\up10\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 Endnote anchor;}
}{\*\listtable{\list\listtemplateid1
{\listlevel\levelnfc23\leveljc0\levelstartat0\levelfollow2{\leveltext \'01\u45 ?;}{\levelnumbers;}\f0\chcbpat1\f0\f0\fi-360\li720}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u111 ?;}{\levelnumbers;}\f3\chcbpat1\f3\f3\f3\fi-360\li1440}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u61607 ?;}{\levelnumbers;}\f5\chcbpat1\f5\f5\f5\fi-360\li2160}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u61623 ?;}{\levelnumbers;}\f6\chcbpat1\f6\f6\f6\fi-360\li2880}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u111 ?;}{\levelnumbers;}\f3\chcbpat1\f3\f3\f3\fi-360\li3600}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u61607 ?;}{\levelnumbers;}\f5\chcbpat1\f5\f5\f5\fi-360\li4320}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u61623 ?;}{\levelnumbers;}\f6\chcbpat1\f6\f6\f6\fi-360\li5040}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u111 ?;}{\levelnumbers;}\f3\chcbpat1\f3\f3\f3\fi-360\li5760}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u61607 ?;}{\levelnumbers;}\f5\chcbpat1\f5\f5\f5\fi-360\li6480}{\listname RTF_Num 3;}\listid1}
}{\listoverridetable{\listoverride\listid1\listoverridecount0\ls0}}

{\info{\creatim\yr2003\mo9\dy19\hr14\min2}{\revtim\yr1601\mo1\dy1\hr0\min0}{\printim\yr1601\mo1\dy1\hr0\min0}{\comment StarWriter}{\vern6450}}\deftab708
{\*\pgdsctbl
{\pgdsc0\pgdscuse195\pgwsxn12240\pghsxn15840\marglsxn1417\margrsxn1417\margtsxn1417\margbsxn1417\pgdscnxt0 Default;}
{\pgdsc1\pgdscuse195\pgwsxn12240\pghsxn15840\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\pgdscnxt1 Endnote;}}
{\*\pgdscno0}\paperh15840\paperw12240\margl1417\margr1417\margt1417\margb1417\sectd\sbknone\pgwsxn12240\pghsxn15840\marglsxn1417\margrsxn1417\margtsxn1417\margbsxn1417\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs24\lang1033\i0\b0{\*\cs79\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 #{\super \chftn{\footnote \chftn\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033{\loch\f1\fs24\lang1033\i0\b0{\*\cs79\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 #}}{\loch\f1\fs16\lang1033 ID_INTRODUCTION}}}
{\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  Introduction to Dev-C++ 5}}}
{\super K{\footnote K\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  introduction;}}}
}}{\loch\f1\fs16\lang1033\{bmc splash.bmp\}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\cf5 Dev-C++}}{\loch\f1\fs16\lang1033 is a full-featured {\i Integrated Development Environment} (IDE) for the {\cf5 C/C++} programming language. }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 It uses {\cf5 Mingw} port of {\cf5 GCC} (GNU Compiler Collection) as it's compiler. It can creates native Win32 executables, }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 either console or GUI, as well as DLLs and static libraries. {\cf5 Dev-C++} can also be used in combination with Cygwin}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 or any other GCC based compiler.}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\cf5 Dev-C++ }}{\loch\f1\fs16\lang1033is a {\cf5 Free Software }distributed under the terms of the {\uldb GNU General Public License (GPL)}{\v ID_GPL}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Dev-C++ features are :}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 - Support GCC based compilers (Mingw included)}
\par {\loch\f1\fs16\lang1033\i0\b0 - Integrated debugging (with GDB)}
\par {\loch\f1\fs16\lang1033\i0\b0 - Support for multiple languages (localization)}
\par {\loch\f1\fs16\lang1033\i0\b0 - Class Browser}
\par {\loch\f1\fs16\lang1033\i0\b0 - Debug variable Browser}
\par {\loch\f1\fs16\lang1033\i0\b0 - Code Completion}
\par {\loch\f1\fs16\lang1033\i0\b0 - Function Listing}
\par {\loch\f1\fs16\lang1033\i0\b0 - Project Manager}
\par {\loch\f1\fs16\lang1033\i0\b0 - Customizable syntax highlighting editor}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0 - Quickly create Windows, console, static libraries and DLL}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 - Support of templates for creating your own project types}
\par {\loch\f1\fs16\lang1033\i0\b0 - Makefile creation}
\par {\loch\f1\fs16\lang1033\i0\b0 - Edit and compile Resource files}
\par {\loch\f1\fs16\lang1033\i0\b0 - Tool Manager}
\par {\loch\f1\fs16\lang1033\i0\b0 - Print support}
\par {\loch\f1\fs16\lang1033\i0\b0 - Find and replace facilities}
\par {\loch\f1\fs16\lang1033\i0\b0 - Package manager, for easy installation of add-on libraries}
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote #\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  ID_GPL}}}
{\loch\f1\fs20\lang1033{\*\cs79\cf0{\*\updnprop5800}\up5\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\fs20\fs20\fs20 {\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  GNU General Public License}}}
{\super K{\footnote K\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  GNU;GPL;license;}}}
}}{\loch\f1\fs16\lang1033{\fs28{\b\cf6 License Agreement}}{\fs28\fs28\fs28 }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Bloodshed Dev-C++ is distributed under the GNU General Public License. Be sure to read it before using Dev-C++.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 GNU GENERAL PUBLIC LICENSE}
\par {\loch\f1\fs16\lang1033\i0\b0 Version 2, June 1991}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Copyright (C) 1989, 1991 Free Software Foundation, Inc.}
\par {\loch\f1\fs16\lang1033\i0\b0 675 Mass Ave, Cambridge, MA 02139, USA}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Everyone is permitted to copy and distribute verbatim copies }
\par {\loch\f1\fs16\lang1033\i0\b0 of this license document, but changing it is not allowed.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0                             Preamble}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   The licenses for most software are designed to take away your}
\par {\loch\f1\fs16\lang1033\i0\b0 freedom to share and change it.  By contrast, the GNU General Public}
\par {\loch\f1\fs16\lang1033\i0\b0 License is intended to guarantee your freedom to share and change free}
\par {\loch\f1\fs16\lang1033\i0\b0 software--to make sure the software is free for all its users.  This}
\par {\loch\f1\fs16\lang1033\i0\b0 General Public License applies to most of the Free Software}
\par {\loch\f1\fs16\lang1033\i0\b0 Foundation's software and to any other program whose authors commit to}
\par {\loch\f1\fs16\lang1033\i0\b0 using it.  (Some other Free Software Foundation software is covered by}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 the GNU Library General Public License instead.)  You can apply it to}
\par {\loch\f1\fs16\lang1033\i0\b0 your programs, too.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   When we speak of free software, we are referring to freedom, not}
\par {\loch\f1\fs16\lang1033\i0\b0 price.  Our General Public Licenses are designed to make sure that you}
\par {\loch\f1\fs16\lang1033\i0\b0 have the freedom to distribute copies of free software (and charge for}
\par {\loch\f1\fs16\lang1033\i0\b0 this service if you wish), that you receive source code or can get it}
\par {\loch\f1\fs16\lang1033\i0\b0 if you want it, that you can change the software or use pieces of it}
\par {\loch\f1\fs16\lang1033\i0\b0 in new free programs; and that you know you can do these things.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   To protect your rights, we need to make restrictions that forbid}
\par {\loch\f1\fs16\lang1033\i0\b0 anyone to deny you these rights or to ask you to surrender the rights.}
\par {\loch\f1\fs16\lang1033\i0\b0 These restrictions translate to certain responsibilities for you if you}
\par {\loch\f1\fs16\lang1033\i0\b0 distribute copies of the software, or if you modify it.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   For example, if you distribute copies of such a program, whether}
\par {\loch\f1\fs16\lang1033\i0\b0 gratis or for a fee, you must give the recipients all the rights that}
\par {\loch\f1\fs16\lang1033\i0\b0 you have.  You must make sure that they, too, receive or can get the}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 source code.  And you must show them these terms so they know their}
\par {\loch\f1\fs16\lang1033\i0\b0 rights.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   We protect your rights with two steps: (1) copyright the software, and}
\par {\loch\f1\fs16\lang1033\i0\b0 (2) offer you this license which gives you legal permission to copy,}
\par {\loch\f1\fs16\lang1033\i0\b0 distribute and/or modify the software.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   Also, for each author's protection and ours, we want to make certain}
\par {\loch\f1\fs16\lang1033\i0\b0 that everyone understands that there is no warranty for this free}
\par {\loch\f1\fs16\lang1033\i0\b0 software.  If the software is modified by someone else and passed on, we}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 want its recipients to know that what they have is not the original, so}
\par {\loch\f1\fs16\lang1033\i0\b0 that any problems introduced by others will not reflect on the original}
\par {\loch\f1\fs16\lang1033\i0\b0 authors' reputations.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   Finally, any free program is threatened constantly by software}
\par {\loch\f1\fs16\lang1033\i0\b0 patents.  We wish to avoid the danger that redistributors of a free}
\par {\loch\f1\fs16\lang1033\i0\b0 program will individually obtain patent licenses, in effect making the}
\par {\loch\f1\fs16\lang1033\i0\b0 program proprietary.  To prevent this, we have made it clear that any}
\par {\loch\f1\fs16\lang1033\i0\b0 patent must be licensed for everyone's free use or not licensed at all.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   The precise terms and conditions for copying, distribution and}
\par {\loch\f1\fs16\lang1033\i0\b0 modification follow.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0                     GNU GENERAL PUBLIC LICENSE}
\par {\loch\f1\fs16\lang1033\i0\b0    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   0. This License applies to any program or other work which contains}
\par {\loch\f1\fs16\lang1033\i0\b0 a notice placed by the copyright holder saying it may be distributed}
\par {\loch\f1\fs16\lang1033\i0\b0 under the terms of this General Public License.  The "Program", below,}
\par {\loch\f1\fs16\lang1033\i0\b0 refers to any such program or work, and a "work based on the Program"}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 means either the Program or any derivative work under copyright law:}
\par {\loch\f1\fs16\lang1033\i0\b0 that is to say, a work containing the Program or a portion of it,}
\par {\loch\f1\fs16\lang1033\i0\b0 either verbatim or with modifications and/or translated into another}
\par {\loch\f1\fs16\lang1033\i0\b0 language.  (Hereinafter, translation is included without limitation in}
\par {\loch\f1\fs16\lang1033\i0\b0 the term "modification".)  Each licensee is addressed as "you".}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Activities other than copying, distribution and modification are not}
\par {\loch\f1\fs16\lang1033\i0\b0 covered by this License; they are outside its scope.  The act of}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 running the Program is not restricted, and the output from the Program}
\par {\loch\f1\fs16\lang1033\i0\b0 is covered only if its contents constitute a work based on the}
\par {\loch\f1\fs16\lang1033\i0\b0 Program (independent of having been made by running the Program).}
\par {\loch\f1\fs16\lang1033\i0\b0 Whether that is true depends on what the Program does.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   1. You may copy and distribute verbatim copies of the Program's}
\par {\loch\f1\fs16\lang1033\i0\b0 source code as you receive it, in any medium, provided that you}
\par {\loch\f1\fs16\lang1033\i0\b0 conspicuously and appropriately publish on each copy an appropriate}
\par {\loch\f1\fs16\lang1033\i0\b0 copyright notice and disclaimer of warranty; keep intact all the}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 notices that refer to this License and to the absence of any warranty;}
\par {\loch\f1\fs16\lang1033\i0\b0 and give any other recipients of the Program a copy of this License}
\par {\loch\f1\fs16\lang1033\i0\b0 along with the Program.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 You may charge a fee for the physical act of transferring a copy, and}
\par {\loch\f1\fs16\lang1033\i0\b0 you may at your option offer warranty protection in exchange for a fee.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   2. You may modify your copy or copies of the Program or any portion}
\par {\loch\f1\fs16\lang1033\i0\b0 of it, thus forming a work based on the Program, and copy and}
\par {\loch\f1\fs16\lang1033\i0\b0 distribute such modifications or work under the terms of Section 1}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 above, provided that you also meet all of these conditions:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     a) You must cause the modified files to carry prominent notices}
\par {\loch\f1\fs16\lang1033\i0\b0     stating that you changed the files and the date of any change.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     b) You must cause any work that you distribute or publish, that in}
\par {\loch\f1\fs16\lang1033\i0\b0     whole or in part contains or is derived from the Program or any}
\par {\loch\f1\fs16\lang1033\i0\b0     part thereof, to be licensed as a whole at no charge to all third}
\par {\loch\f1\fs16\lang1033\i0\b0     parties under the terms of this License.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     c) If the modified program normally reads commands interactively}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     when run, you must cause it, when started running for such}
\par {\loch\f1\fs16\lang1033\i0\b0     interactive use in the most ordinary way, to print or display an}
\par {\loch\f1\fs16\lang1033\i0\b0     announcement including an appropriate copyright notice and a}
\par {\loch\f1\fs16\lang1033\i0\b0     notice that there is no warranty (or else, saying that you provide}
\par {\loch\f1\fs16\lang1033\i0\b0     a warranty) and that users may redistribute the program under}
\par {\loch\f1\fs16\lang1033\i0\b0     these conditions, and telling the user how to view a copy of this}
\par {\loch\f1\fs16\lang1033\i0\b0     License.  (Exception: if the Program itself is interactive but}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     does not normally print such an announcement, your work based on}
\par {\loch\f1\fs16\lang1033\i0\b0     the Program is not required to print an announcement.)}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 These requirements apply to the modified work as a whole.  If}
\par {\loch\f1\fs16\lang1033\i0\b0 identifiable sections of that work are not derived from the Program,}
\par {\loch\f1\fs16\lang1033\i0\b0 and can be reasonably considered independent and separate works in}
\par {\loch\f1\fs16\lang1033\i0\b0 themselves, then this License, and its terms, do not apply to those}
\par {\loch\f1\fs16\lang1033\i0\b0 sections when you distribute them as separate works.  But when you}
\par {\loch\f1\fs16\lang1033\i0\b0 distribute the same sections as part of a whole which is a work based}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 on the Program, the distribution of the whole must be on the terms of}
\par {\loch\f1\fs16\lang1033\i0\b0 this License, whose permissions for other licensees extend to the}
\par {\loch\f1\fs16\lang1033\i0\b0 entire whole, and thus to each and every part regardless of who wrote it.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Thus, it is not the intent of this section to claim rights or contest}
\par {\loch\f1\fs16\lang1033\i0\b0 your rights to work written entirely by you; rather, the intent is to}
\par {\loch\f1\fs16\lang1033\i0\b0 exercise the right to control the distribution of derivative or}
\par {\loch\f1\fs16\lang1033\i0\b0 collective works based on the Program.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 In addition, mere aggregation of another work not based on the Program}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 with the Program (or with a work based on the Program) on a volume of}
\par {\loch\f1\fs16\lang1033\i0\b0 a storage or distribution medium does not bring the other work under}
\par {\loch\f1\fs16\lang1033\i0\b0 the scope of this License.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   3. You may copy and distribute the Program (or a work based on it,}
\par {\loch\f1\fs16\lang1033\i0\b0 under Section 2) in object code or executable form under the terms of}
\par {\loch\f1\fs16\lang1033\i0\b0 Sections 1 and 2 above provided that you also do one of the following:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     a) Accompany it with the complete corresponding machine-readable}
\par {\loch\f1\fs16\lang1033\i0\b0     source code, which must be distributed under the terms of Sections}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     1 and 2 above on a medium customarily used for software interchange; or,}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     b) Accompany it with a written offer, valid for at least three}
\par {\loch\f1\fs16\lang1033\i0\b0     years, to give any third party, for a charge no more than your}
\par {\loch\f1\fs16\lang1033\i0\b0     cost of physically performing source distribution, a complete}
\par {\loch\f1\fs16\lang1033\i0\b0     machine-readable copy of the corresponding source code, to be}
\par {\loch\f1\fs16\lang1033\i0\b0     distributed under the terms of Sections 1 and 2 above on a medium}
\par {\loch\f1\fs16\lang1033\i0\b0     customarily used for software interchange; or,}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     c) Accompany it with the information you received as to the offer}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     to distribute corresponding source code.  (This alternative is}
\par {\loch\f1\fs16\lang1033\i0\b0     allowed only for noncommercial distribution and only if you}
\par {\loch\f1\fs16\lang1033\i0\b0     received the program in object code or executable form with such}
\par {\loch\f1\fs16\lang1033\i0\b0     an offer, in accord with Subsection b above.)}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The source code for a work means the preferred form of the work for}
\par {\loch\f1\fs16\lang1033\i0\b0 making modifications to it.  For an executable work, complete source}
\par {\loch\f1\fs16\lang1033\i0\b0 code means all the source code for all modules it contains, plus any}
\par {\loch\f1\fs16\lang1033\i0\b0 associated interface definition files, plus the scripts used to}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 control compilation and installation of the executable.  However, as a}
\par {\loch\f1\fs16\lang1033\i0\b0 special exception, the source code distributed need not include}
\par {\loch\f1\fs16\lang1033\i0\b0 anything that is normally distributed (in either source or binary}
\par {\loch\f1\fs16\lang1033\i0\b0 form) with the major components (compiler, kernel, and so on) of the}
\par {\loch\f1\fs16\lang1033\i0\b0 operating system on which the executable runs, unless that component}
\par {\loch\f1\fs16\lang1033\i0\b0 itself accompanies the executable.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 If distribution of executable or object code is made by offering}
\par {\loch\f1\fs16\lang1033\i0\b0 access to copy from a designated place, then offering equivalent}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 access to copy the source code from the same place counts as}
\par {\loch\f1\fs16\lang1033\i0\b0 distribution of the source code, even though third parties are not}
\par {\loch\f1\fs16\lang1033\i0\b0 compelled to copy the source along with the object code.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   4. You may not copy, modify, sublicense, or distribute the Program}
\par {\loch\f1\fs16\lang1033\i0\b0 except as expressly provided under this License.  Any attempt}
\par {\loch\f1\fs16\lang1033\i0\b0 otherwise to copy, modify, sublicense or distribute the Program is}
\par {\loch\f1\fs16\lang1033\i0\b0 void, and will automatically terminate your rights under this License.}
\par {\loch\f1\fs16\lang1033\i0\b0 However, parties who have received copies, or rights, from you under}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 this License will not have their licenses terminated so long as such}
\par {\loch\f1\fs16\lang1033\i0\b0 parties remain in full compliance.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   5. You are not required to accept this License, since you have not}
\par {\loch\f1\fs16\lang1033\i0\b0 signed it.  However, nothing else grants you permission to modify or}
\par {\loch\f1\fs16\lang1033\i0\b0 distribute the Program or its derivative works.  These actions are}
\par {\loch\f1\fs16\lang1033\i0\b0 prohibited by law if you do not accept this License.  Therefore, by}
\par {\loch\f1\fs16\lang1033\i0\b0 modifying or distributing the Program (or any work based on the}
\par {\loch\f1\fs16\lang1033\i0\b0 Program), you indicate your acceptance of this License to do so, and}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 all its terms and conditions for copying, distributing or modifying}
\par {\loch\f1\fs16\lang1033\i0\b0 the Program or works based on it.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   6. Each time you redistribute the Program (or any work based on the}
\par {\loch\f1\fs16\lang1033\i0\b0 Program), the recipient automatically receives a license from the}
\par {\loch\f1\fs16\lang1033\i0\b0 original licensor to copy, distribute or modify the Program subject to}
\par {\loch\f1\fs16\lang1033\i0\b0 these terms and conditions.  You may not impose any further}
\par {\loch\f1\fs16\lang1033\i0\b0 restrictions on the recipients' exercise of the rights granted herein.}
\par {\loch\f1\fs16\lang1033\i0\b0 You are not responsible for enforcing compliance by third parties to}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 this License.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   7. If, as a consequence of a court judgment or allegation of patent}
\par {\loch\f1\fs16\lang1033\i0\b0 infringement or for any other reason (not limited to patent issues),}
\par {\loch\f1\fs16\lang1033\i0\b0 conditions are imposed on you (whether by court order, agreement or}
\par {\loch\f1\fs16\lang1033\i0\b0 otherwise) that contradict the conditions of this License, they do not}
\par {\loch\f1\fs16\lang1033\i0\b0 excuse you from the conditions of this License.  If you cannot}
\par {\loch\f1\fs16\lang1033\i0\b0 distribute so as to satisfy simultaneously your obligations under this}
\par {\loch\f1\fs16\lang1033\i0\b0 License and any other pertinent obligations, then as a consequence you}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 may not distribute the Program at all.  For example, if a patent}
\par {\loch\f1\fs16\lang1033\i0\b0 license would not permit royalty-free redistribution of the Program by}
\par {\loch\f1\fs16\lang1033\i0\b0 all those who receive copies directly or indirectly through you, then}
\par {\loch\f1\fs16\lang1033\i0\b0 the only way you could satisfy both it and this License would be to}
\par {\loch\f1\fs16\lang1033\i0\b0 refrain entirely from distribution of the Program.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 If any portion of this section is held invalid or unenforceable under}
\par {\loch\f1\fs16\lang1033\i0\b0 any particular circumstance, the balance of the section is intended to}
\par {\loch\f1\fs16\lang1033\i0\b0 apply and the section as a whole is intended to apply in other}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 circumstances.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 It is not the purpose of this section to induce you to infringe any}
\par {\loch\f1\fs16\lang1033\i0\b0 patents or other property right claims or to contest validity of any}
\par {\loch\f1\fs16\lang1033\i0\b0 such claims; this section has the sole purpose of protecting the}
\par {\loch\f1\fs16\lang1033\i0\b0 integrity of the free software distribution system, which is}
\par {\loch\f1\fs16\lang1033\i0\b0 implemented by public license practices.  Many people have made}
\par {\loch\f1\fs16\lang1033\i0\b0 generous contributions to the wide range of software distributed}
\par {\loch\f1\fs16\lang1033\i0\b0 through that system in reliance on consistent application of that}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 system; it is up to the author/donor to decide if he or she is willing}
\par {\loch\f1\fs16\lang1033\i0\b0 to distribute software through any other system and a licensee cannot}
\par {\loch\f1\fs16\lang1033\i0\b0 impose that choice.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This section is intended to make thoroughly clear what is believed to}
\par {\loch\f1\fs16\lang1033\i0\b0 be a consequence of the rest of this License.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   8. If the distribution and/or use of the Program is restricted in}
\par {\loch\f1\fs16\lang1033\i0\b0 certain countries either by patents or by copyrighted interfaces, the}
\par {\loch\f1\fs16\lang1033\i0\b0 original copyright holder who places the Program under this License}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 may add an explicit geographical distribution limitation excluding}
\par {\loch\f1\fs16\lang1033\i0\b0 those countries, so that distribution is permitted only in or among}
\par {\loch\f1\fs16\lang1033\i0\b0 countries not thus excluded.  In such case, this License incorporates}
\par {\loch\f1\fs16\lang1033\i0\b0 the limitation as if written in the body of this License.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   9. The Free Software Foundation may publish revised and/or new versions}
\par {\loch\f1\fs16\lang1033\i0\b0 of the General Public License from time to time.  Such new versions will}
\par {\loch\f1\fs16\lang1033\i0\b0 be similar in spirit to the present version, but may differ in detail to}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 address new problems or concerns.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Each version is given a distinguishing version number.  If the Program}
\par {\loch\f1\fs16\lang1033\i0\b0 specifies a version number of this License which applies to it and "any}
\par {\loch\f1\fs16\lang1033\i0\b0 later version", you have the option of following the terms and conditions}
\par {\loch\f1\fs16\lang1033\i0\b0 either of that version or of any later version published by the Free}
\par {\loch\f1\fs16\lang1033\i0\b0 Software Foundation.  If the Program does not specify a version number of}
\par {\loch\f1\fs16\lang1033\i0\b0 this License, you may choose any version ever published by the Free Software}
\par {\loch\f1\fs16\lang1033\i0\b0 Foundation.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   10. If you wish to incorporate parts of the Program into other free}
\par {\loch\f1\fs16\lang1033\i0\b0 programs whose distribution conditions are different, write to the author}
\par {\loch\f1\fs16\lang1033\i0\b0 to ask for permission.  For software which is copyrighted by the Free}
\par {\loch\f1\fs16\lang1033\i0\b0 Software Foundation, write to the Free Software Foundation; we sometimes}
\par {\loch\f1\fs16\lang1033\i0\b0 make exceptions for this.  Our decision will be guided by the two goals}
\par {\loch\f1\fs16\lang1033\i0\b0 of preserving the free status of all derivatives of our free software and}
\par {\loch\f1\fs16\lang1033\i0\b0 of promoting the sharing and reuse of software generally.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0                             NO WARRANTY}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY}
\par {\loch\f1\fs16\lang1033\i0\b0 FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN}
\par {\loch\f1\fs16\lang1033\i0\b0 OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES}
\par {\loch\f1\fs16\lang1033\i0\b0 PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED}
\par {\loch\f1\fs16\lang1033\i0\b0 OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF}
\par {\loch\f1\fs16\lang1033\i0\b0 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE}
\par {\loch\f1\fs16\lang1033\i0\b0 PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,}
\par {\loch\f1\fs16\lang1033\i0\b0 REPAIR OR CORRECTION.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING}
\par {\loch\f1\fs16\lang1033\i0\b0 WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR}
\par {\loch\f1\fs16\lang1033\i0\b0 REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,}
\par {\loch\f1\fs16\lang1033\i0\b0 INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING}
\par {\loch\f1\fs16\lang1033\i0\b0 OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY}
\par {\loch\f1\fs16\lang1033\i0\b0 YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER}
\par {\loch\f1\fs16\lang1033\i0\b0 PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE}
\par {\loch\f1\fs16\lang1033\i0\b0 POSSIBILITY OF SUCH DAMAGES.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0                      END OF TERMS AND CONDITIONS}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0         Appendix: How to Apply These Terms to Your New Programs}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   If you develop a new program, and you want it to be of the greatest}
\par {\loch\f1\fs16\lang1033\i0\b0 possible use to the public, the best way to achieve this is to make it}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 free software which everyone can redistribute and change under these terms.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   To do so, attach the following notices to the program.  It is safest}
\par {\loch\f1\fs16\lang1033\i0\b0 to attach them to the start of each source file to most effectively}
\par {\loch\f1\fs16\lang1033\i0\b0 convey the exclusion of warranty; and each file should have at least}
\par {\loch\f1\fs16\lang1033\i0\b0 the "copyright" line and a pointer to where the full notice is found.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     <one line to give the program's name and a brief idea of what it does.>}
\par {\loch\f1\fs16\lang1033\i0\b0     Copyright (C) 19yy  <name of author>}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     This program is free software; you can redistribute it and/or modify}
\par {\loch\f1\fs16\lang1033\i0\b0     it under the terms of the GNU General Public License as published by}
\par {\loch\f1\fs16\lang1033\i0\b0     the Free Software Foundation; either version 2 of the License, or}
\par {\loch\f1\fs16\lang1033\i0\b0     (at your option) any later version.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     This program is distributed in the hope that it will be useful,}
\par {\loch\f1\fs16\lang1033\i0\b0     but WITHOUT ANY WARRANTY; without even the implied warranty of}
\par {\loch\f1\fs16\lang1033\i0\b0     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the}
\par {\loch\f1\fs16\lang1033\i0\b0     GNU General Public License for more details.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     You should have received a copy of the GNU General Public License}
\par {\loch\f1\fs16\lang1033\i0\b0     along with this program; if not, write to the Free Software}
\par {\loch\f1\fs16\lang1033\i0\b0     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Also add information on how to contact you by electronic and paper mail.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 If the program is interactive, make it output a short notice like this}
\par {\loch\f1\fs16\lang1033\i0\b0 when it starts in an interactive mode:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     Gnomovision version 69, Copyright (C) 19yy name of author}
\par {\loch\f1\fs16\lang1033\i0\b0     Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     This is free software, and you are welcome to redistribute it}
\par {\loch\f1\fs16\lang1033\i0\b0     under certain conditions; type `show c' for details.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The hypothetical commands `show w' and `show c' should show the appropriate}
\par {\loch\f1\fs16\lang1033\i0\b0 parts of the General Public License.  Of course, the commands you use may}
\par {\loch\f1\fs16\lang1033\i0\b0 be called something other than `show w' and `show c'; they could even be}
\par {\loch\f1\fs16\lang1033\i0\b0 mouse-clicks or menu items--whatever suits your program.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 You should also get your employer (if you work as a programmer) or your}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 school, if any, to sign a "copyright disclaimer" for the program, if}
\par {\loch\f1\fs16\lang1033\i0\b0 necessary.  Here is a sample; alter the names:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   Yoyodyne, Inc., hereby disclaims all copyright interest in the program}
\par {\loch\f1\fs16\lang1033\i0\b0   `Gnomovision' (which makes passes at compilers) written by James Hacker.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   <signature of Ty Coon>, 1 April 1989}
\par {\loch\f1\fs16\lang1033\i0\b0   Ty Coon, President of Vice}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This General Public License does not permit incorporating your program into}
\par {\loch\f1\fs16\lang1033\i0\b0 proprietary programs.  If your program is a subroutine library, you may}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 consider it more useful to permit linking proprietary applications with the}
\par {\loch\f1\fs16\lang1033\i0\b0 library.  If this is what you want to do, use the GNU Library General}
\par {\loch\f1\fs16\lang1033\i0\b0 Public License instead of this License. }
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 ID_SYSTEMREQUIREMENTS}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 System Requirements}}}}
}}{\loch\f1\fs16\lang1033{\b\fs28\cf6 System Requirements}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033  
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 These are the minimum requirements of Dev-C++: }
\par \pard\plain \ltrpar\s6\cf5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 - Microsoft Windows 95, 98, NT 4, 2000, XP }
\par \pard\plain \ltrpar\s6\cf5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 - 8 MB RAM with a big swapfile }
\par \pard\plain \ltrpar\s6\cf5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 - 100 Mhz Intel compatible CPU }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\cf5 - 30 MB free disk space}}{\loch\f1\fs16\lang1033 }
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 These are the recommended requirements of Dev-C++:}
\par \pard\plain \ltrpar\s6\cf5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 - Microsoft Windows 2000, XP}
\par \pard\plain \ltrpar\s6\cf5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 - 32 MB RAM }
\par \pard\plain \ltrpar\s6\cf5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 - 400 Mhz Intel compatible CPU }
\par \pard\plain \ltrpar\s6\cf5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 - 200 MB free disk space}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote #\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  ID_CREDITS}}}
{\loch\f1\fs24\lang1033{\*\cs79\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  Credits}}}
}}{\loch\f1\fs16\lang1033 {\b\fs28\cf6 Credits}}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\cf7 Developers }}{\loch\f1\fs16\lang1033: Colin Laplace, Hongli Lai, Mike Berg, Yiannis Mandravellos}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\cf7 Mingw compiler system :}}{\loch\f1\fs16\lang1033 Mumit Khan, J.J. Var Der Heidjen, Colin Hendrix and GNU developers}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\cf7 Update system and initial work on the help file : }}{\loch\f1\fs16\lang1033Kip Warner}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\cf7 New Look theme :}}{\loch\f1\fs16\lang1033 Gerard Caulfield: }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\cf7 Gnome icons :}}{\loch\f1\fs16\lang1033 Gnome designers}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\cf7 Blue theme :}}{\loch\f1\fs16\lang1033 Thomas Thron}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033{\loch\f1\fs16\lang1033\i0\b0{\cf7 Introduction to C :}}{\loch\f1\fs16\lang1033 University of Leicester}
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote #\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  ID_CREATEPROJECT}}}
{\loch\f1\fs20\lang1033{\*\cs79\cf0{\*\updnprop5800}\up5\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\fs20\fs20\fs20 {\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  Creating a Project}}}
{\super K{\footnote K\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  create;project;}}}
}}{\loch\f1\fs16\lang1033{\fs28{\b\cf6 Creating a Project}}{\fs28\fs28\fs28 }}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf7{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 What is a Dev-C++ Project ?}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 A Project is a center for managing your different source files and options inside Dev-C++. It helps you navigate }
\par {\loch\f1\fs16\lang1033\i0\b0 through your code, and easily set different parameters, like the type of program you are doing (GUI, console, DLL ...).}
\par 
\par \pard\plain \ltrpar\s6\cf7{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 When to use Dev-C++ Projects ?}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 - If you have more than one source file, you must create a project in order for Dev-C++ to link all your source files together,}
\par {\loch\f1\fs16\lang1033\i0\b0 after they were compiled. }
\par {\loch\f1\fs16\lang1033\i0\b0 - If you need to create a DLL or static library, or want to use Resources files in your program}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s6\cf7{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 How can i create a Dev-C++ Project ? }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Go to the {\i File} menu and click on {\i New}, then {\i Project}. A dialog opens, containing different Project types.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 \{bmc newproj.bmp\}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Here are the different basic projects type :}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 - Windows application :  creates a Windows program, using the Win32 API. }
\par {\loch\f1\fs16\lang1033\i0\b0 - Console application : creates a console program}
\par {\loch\f1\fs16\lang1033\i0\b0 - Static library : creates an empty project with the options needed for building a static library}
\par {\loch\f1\fs16\lang1033\i0\b0 - DLL : creates a Win32 Dynamic Link Library}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Now that you selected your project type, fill the name of your project in the corresponding edit box, select the language you}
\par {\loch\f1\fs16\lang1033\i0\b0 will be using (C or C++), and click on OK. }
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote #\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  ID_ADDREMPROJECT}}}
{\loch\f1\fs20\lang1033{\*\cs79\cf0{\*\updnprop5800}\up5\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\fs20\fs20\fs20 {\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  Adding/Removing files}}}
{\super K{\footnote K\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  project;add;remove;}}}
}}{\loch\f1\fs16\lang1033{\b\fs28\cf6  Adding and Removing files}}
\par \pard\plain \ltrpar\s6\cf6{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs28\lang1033\ab\ltrch\dbch\afs28\langfe1036\ab\loch\fs28\lang1033\b 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Adding and removing files is very easy. You can add multiple files in the same time by clicking on {\i Project} menu,}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 then on {\i Add to Project}.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0  \{bmc project_add.bmp\}}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 You have different ways for removing files from your project. Either click on {\i Project} menu, then on {\i Remove from Project} }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 and select the file you want to remove in the list, or right-click on the file you want to remove in the Project Manager, and click on {\i Remove file }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ai\ltrch\dbch\afs16\langfe1036\ai\loch\fs16\lang1033\i 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i\b0{\i  }}{\loch\f1\fs16\lang1033\{bmc project_remove.bmp\}}
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote #\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  ID_MANAGEPROJECT}}}
{\loch\f1\fs20\lang1033{\*\cs79\cf0{\*\updnprop5800}\up5\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\fs20\fs20\fs20 {\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  Managing Project options}}}
{\super K{\footnote K\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  manage;project;options;}}}
}}{\loch\f1\fs16\lang1033{\b\fs28\cf6 Project options overview}}
\par \pard\plain \ltrpar\s6\cf6{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs28\lang1033\ab\ltrch\dbch\afs28\langfe1036\ab\loch\fs28\lang1033\b 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 You can load the Project Options dialog by clicking on the {\i Project} menu, then on {\i Options }(shortcut :Alt+P).}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ai\ab\ltrch\dbch\afs16\langfe1036\ai\ab\loch\fs16\lang1033\i\b {\loch\f1\fs16\lang1033\i\b General sheet : }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 {\loch\f1\fs20\lang1033\i0\b0 \{bmc projopt_general.bmp\}}
\par \pard\plain \ltrpar\s11\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1024\loch\fs20\lang1024 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\cf7 Name}}{\loch\f1\fs16\lang1033 : Modify here the name of your project.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\cf7 Icon}}{\loch\f1\fs16\lang1033{\cf6  }: You can assign an icon to your program, either by selecting one in the Icon Library, or by giving your own icon using the Browse button.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\cf7 Type}}{\loch\f1\fs16\lang1033{\cf6  }: This is an important settings which indicates which project type you are making. Select :}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li705\ri0\lin705\rin0\fi0\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b - Win32 GUI}}{\loch\f1\fs16\lang1033 : if your application is a graphical Windows program}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li705\ri0\lin705\rin0\fi0\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b - Win32 Console }}{\loch\f1\fs16\lang1033: if your application needs a console window (MS-Dos window)}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li705\ri0\lin705\rin0\fi0\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b - Win32 Static Lib }}{\loch\f1\fs16\lang1033: if you are creating a static library}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li705\ri0\lin705\rin0\fi0\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b - Win32 DLL }}{\loch\f1\fs16\lang1033: if you are creating a dynamic link library (DLL){\v ID_LINKLIB}
}
\par \pard\plain \ltrpar\s11\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1024\loch\fs20\lang1024 
\par \pard\plain \ltrpar\s11\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1024\loch\fs20\lang1024 
\par \pard\plain \ltrpar\s11\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1024\loch\fs20\lang1024 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ai\ab\ltrch\dbch\afs16\langfe1036\ai\ab\loch\fs16\lang1033\i\b {\loch\f1\fs16\lang1033\i\b Files sheet : }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 {\loch\f1\fs20\lang1033\i0\b0 \{bmc projopt_files.bmp\}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 This window enables you to modify the compilation commands and options for each source file.}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\cf7 Build priority : }}{\loch\f1\fs16\lang1033Increment this value in order to have the source file compiled in priority of the others}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\cf7 Include in compilation : }}{\loch\f1\fs16\lang1033If not set, your file will not be compiled}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\cf7 Include in linking : }}{\loch\f1\fs16\lang1033Add the object file generated from the source file to the linking stage}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\cf7 Compile file as C++ : }}{\loch\f1\fs16\lang1033Check this flag if it is a C++ source file}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\cf7 Override build command : }}{\loch\f1\fs16\lang1033For experimented users only. You can change there the command used by Dev-C++ to compile your file}
\par \pard\plain \ltrpar\s11\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1024\loch\fs20\lang1024 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ai\ab\ltrch\dbch\afs16\langfe1036\ai\ab\loch\fs16\lang1033\i\b 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ai\ab\ltrch\dbch\afs16\langfe1036\ai\ab\loch\fs16\lang1033\i\b {\loch\f1\fs16\lang1033\i\b Compiler sheet : }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 \{bmc projopt_comp.bmp\}}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 See {\lang1024{\uldb Compiler Options}}{\langfe1024\lang1024ID_COMPILEROPTIONS}}
\par \pard\plain \ltrpar\s11\cf7{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1024\loch\fs20\lang1024 
\par \pard\plain \ltrpar\s11\cf7{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1024\loch\fs20\lang1024 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ai\ab\ltrch\dbch\afs16\langfe1036\ai\ab\loch\fs16\lang1033\i\b {\loch\f1\fs16\lang1033\i\b Parameters sheet : }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 \{bmc projopt_lib.bmp\}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 You can provide here command line arguments to the C/C++ compilers and linker.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Use the linker parameters box to specify libraries to link with your project. For more information, please {\lang1024{\uldb read this}}{\langfe1024\lang1024ID_LINKLIB.}}
\par \pard\plain \ltrpar\s11\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1024\loch\fs20\lang1024 
\par \pard\plain \ltrpar\s11\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1024\loch\fs20\lang1024 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ai\ab\ltrch\dbch\afs16\langfe1036\ai\ab\loch\fs16\lang1033\i\b {\loch\f1\fs16\lang1033\i\b Directories sheet : }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 {\loch\f1\fs20\lang1033\i0\b0 \{bmc projopt_dirs.bmp\}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 You can provide here a list of Includes, Resources and Libraries directories to be searched when compiling/linking.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ai\ab\ltrch\dbch\afs16\langfe1036\ai\ab\loch\fs16\lang1033\i\b {\loch\f1\fs16\lang1033\i\b Build Options sheet : }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 {\loch\f1\fs20\lang1033\i0\b0 \{bmc projopt_build.bmp\}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\cf7 Executable output directory}}{\loch\f1\fs16\lang1033{\cf6  }: Specify here the directory where your executable will be created (default is project\rquote s directory){\cf6 .}}
\par \pard\plain \ltrpar\s6\cf6{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\cf7 Object file output directory}}{\loch\f1\fs16\lang1033{\cf6  }: Specify here the directory where your object files will be created (default is source file\rquote s directory).}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\cf7 Override output filename : }}{\loch\f1\fs16\lang1033You may change the output filename of your program here.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ai\ab\ltrch\dbch\afs16\langfe1036\ai\ab\loch\fs16\lang1033\i\b {\loch\f1\fs16\lang1033\i\b Makefile sheet : }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 {\loch\f1\fs20\lang1033\i0\b0 \{bmc projopt_make.bmp\}}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Dev-C++ automatically creates a Makefile for taking care of the building process. If you are experienced with makefiles and want to add other lines, you can do it here.}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ai\ab\ltrch\dbch\afs16\langfe1036\ai\ab\loch\fs16\lang1033\i\b {\loch\f1\fs16\lang1033\i\b Version Info sheet : }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 {\loch\f1\fs20\lang1033\i0\b0 \{bmc projopt_info.bmp\}}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0 You can specify version information for your program here.}
\par \page\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033{\super #{\footnote #\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  ID_LINKLIB}}}
{\loch\f1\fs24\lang1033{\*\cs79\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  Linking libraries with your project}}}
{\super K{\footnote K\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  libraries;library;link;linking;}}}
}}{\loch\f1\fs16\lang1033 {\b\fs28\cf6 Linking libraries with your project}}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ab\ltrch\dbch\af1\afs24\langfe1033\ab\loch\f1\fs24\lang1033\b {\loch\f1\fs16\lang1033\i0\b A little history : }
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Library filenames under the GNU system are in the form {\i libNAME.a} (with NAME the name of the library, like wsock32).}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Thus if for example you want to use the wsock32 (winsock) library, the filename will be {\i libwsock32.a}}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0 The GCC parameter for linking a library is {\b{\i \endash }}{\b\b\bl{\i NAME}}, so for linking with the wsock32 library we would give GCC the \endash lwsock32 parameter.}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Linking your library}}{\loch\f1\fs16\lang1033 :}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Click on {\i Project }menu then on {\i Options}. Now click on the {\i Parameters} sheet{\i .}}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ai\ltrch\dbch\af1\afs24\langfe1033\ai\loch\f1\fs24\lang1033\i 
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0 \{bmc projopt_lib.bmp\}}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0 In the {\i Linker} edit box, you can specify as many libraries as you need. You can also pass the complete filename of the library. }
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Example : {\i -}lwx \endash lm \endash lwsock32 c:\\libs\\mylib.a c:\\objs\\myobj.o}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0 You may also use the {\i Add Library or Object} button  \{bmc icon_addlib.bmp\}  to select your library from a list.}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote #\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  ID_COMPILELINK}}}
{\loch\f1\fs20\lang1033{\*\cs79\cf0{\*\updnprop5800}\up5\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\fs20\fs20\fs20 {\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  Compiling and linking process}}}
{\super K{\footnote K\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  compile;linking;compiling;link;}}}
}}{\loch\f1\fs16\lang1033{\fs20  }{\b\fs28\cf6 Compiling and linking process}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s10\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ab\ltrch\dbch\af1\afs24\langfe1033\ab\loch\f1\fs24\lang1033\b {\loch\f1\fs16\lang1033\i0\b How does the compile and link process works ?}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ab\ltrch\dbch\afs16\langfe1036\ab\loch\fs16\lang1033\b 
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0 The process can be globally divided into several programs :}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi0\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033{\loch\f1\fs16\lang1033\i0\b0{\cf7 - Preprocessor}}{\loch\f1\fs16\lang1033 : process the source file before actually compiling it. It will for example check and replace macros and include files in your source.}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi0\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033{\loch\f1\fs16\lang1033\i0\b0{\cf7 - Compiler : }}{\loch\f1\fs16\lang1033transform your source file into assembly code (processor language \endash  human readable)}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi0\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033{\loch\f1\fs16\lang1033\i0\b0{\cf7 - Assembler :}}{\loch\f1\fs16\lang1033 takes the assembly code and generate machine-readable code (binary object code)}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi0\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033{\loch\f1\fs16\lang1033\i0\b0{\cf7 - Linker : }}{\loch\f1\fs16\lang1033assembles and resolves object codes together to create a single executable.}
\par \pard\plain \ltrpar\s8\cf7{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ab\ltrch\dbch\af1\afs24\langfe1033\ab\loch\f1\fs24\lang1033\b {\loch\f1\fs16\lang1033\i0\b How to do this in Dev-C++ ?}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ab\ltrch\dbch\af1\afs24\langfe1033\ab\loch\f1\fs24\lang1033\b 
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Just go to the {\i Execute }menu and click {\i Compile}  \{bmc icon_compile.bmp\} (shortcut : Ctrl+F9), and Dev-C++ will take care of calling the compiler and linker.}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Look at the bottom panel of Dev-C++, you should get something like this :}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1036 {\loch\f1\fs16\lang1036\i0\b0 \{bmc comp_log.bmp\}}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1036 
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0 This log window shows you what Dev-C++ is doing (the program it executes, the files it is creating, ...).}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0 In case your program compiled, you will see the message \lquote Compilation successful\rquote  in this window.}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0 If compiling or linking fails, you will see a list of the errors on the bottom panel :}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0 \{bmc comp_errors.bmp\}}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0 You can directly jump to the line in your code where the error appear by double-clicking on its item.}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0 To note: a \lquote parse error\rquote  is a syntax error (like a missing semicolon at the end of an instruction, etc...).}
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote #\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  ID_EXECUTE}}}
{\loch\f1\fs20\lang1033{\*\cs79\cf0{\*\updnprop5800}\up5\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\fs20\fs20\fs20 {\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  Executing your program}}}
{\super K{\footnote K\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  executing;execute;program;}}}
}}{\loch\f1\fs16\lang1033{\fs28\cf6  {\b Executing your program}}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s10\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ab\ltrch\dbch\af1\afs24\langfe1033\ab\loch\f1\fs24\lang1033\b {\loch\f1\fs16\lang1033\i0\b Basics :}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Executing your program is as simply as clicking on the {\i Execute} menu, then {\i Run}  \{bmc icon_run.bmp\} (shortcut : Ctrl+F10).}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 You can also use {\i Compile and Run}  \{bmc icon_compilerun.bmp\} (shortcut : F9) to build your program before executing it.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 If you need to pass parameters to your program, you can use {\i Execute} menu, then {\i Parameters} to provide them.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par \pard\plain \ltrpar\s10\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ab\ltrch\dbch\af1\afs24\langfe1033\ab\loch\f1\fs24\lang1033\b {\loch\f1\fs16\lang1033\i0\b Profiling :}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ab\ltrch\dbch\afs16\langfe1036\ab\loch\fs16\lang1033\b 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 This process reports you what happens in your program (function calls, execution time, ...) when you execute it.}
\par {\loch\f1\fs16\lang1033\i0\b0 You must enable \lquote Generate profiling info for analysis\rquote  in Compiler Options, Code Generation sheet. Then compile your project as usual, and run it (profiling information are generated/refreshed each time you execute your program). }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 When you are done, click the {\i Execute} menu, then {\i Profile analysis}. The profiling window will appear and show you a profile of the execution of your program.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote #\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  ID_INTRODEBUG}}}
{\loch\f1\fs20\lang1033{\*\cs79\cf0{\*\updnprop5800}\up5\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\fs20\fs20\fs20 {\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  Introduction to Debugging}}}
{\super K{\footnote K\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  debug;introduction;}}}
}}{\loch\f1\fs16\lang1033{\fs20  }{\b\fs28\cf6 Introduction to debugging}}
\par \pard\plain \ltrpar\s6\cf6{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs28\lang1033\ab\ltrch\dbch\afs28\langfe1036\ab\loch\fs28\lang1033\b 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 It is a known fact that sometimes developers make errors when making a program. Those errors commonly called \lquote bugs\rquote  can be very tricky to find and correct, thus the debugger has been created to help developers investigate their program while it is running.
}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 A debugger basically runs a program while keeping track of its functions, variables and instructions. It is capable of stopping your program at a given moment, which is called breakpointing. You can set breakpoints anywhere in your code : once your program
 reaches that code during execution, the debugger will stop and let you examine the current data in your program. }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 You probably already understand how useful a debugger may be when trying to correct bugs, so you may go to the{\uldb  {\lang1024 next section }}{\langfe1024\lang1024ID_DEBUGPROCESS to learn} how to use Dev-C++ integrated debugging.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033  
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote #\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  ID_DEBUGPROCESS}}}
{\loch\f1\fs20\lang1033{\*\cs79\cf0{\*\updnprop5800}\up5\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\fs20\fs20\fs20 {\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  Debug Process}}}
{\super K{\footnote K\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  debug;}}}
}}{\loch\f1\fs16\lang1033{\fs28\cf6  {\b Debugging your program}}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Launching your program into the debugger is easy. Just go to the {\i Debug} menu and click on {\i Debug}  \{bmc icon_debug.bmp\} (shortcut : F8).}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 If you do not have debugging information set in your project, Dev-C++ will ask you if you want to rebuild your program with these information enabled. You can manually select that option in Compiler Option in the Linker section. After your project has been
 rebuild, you can launch Debug again. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The debugger has now loaded your program and runs it. but until that you can learn to control several aspects of the debugger :}
\par 
\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\fs16\lang1024\fs16\langfe1024\fs16\f0\chcbpat1\f0 -}\ilvl0 \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls0\li720\ri0\lin720\rin0\fi-360\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1024\loch\fs16\lang1024{\loch\f1\fs16\lang1024\i0\b0{\uldb Setting Breakpoints in your code}}{\loch\f1\fs16\lang1024ID_BREAKPOINT}
\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\fs16\lang1024\fs16\langfe1024\fs16\f0\chcbpat1\f0 -}\ilvl0 \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls0\li720\ri0\lin720\rin0\fi-360\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1024\loch\fs16\lang1024{\loch\f1\fs16\lang1024\i0\b0{\uldb Stepping in your code}}{\loch\f1\fs16\lang1024ID_STEPDEBUG}
\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\fs16\lang1024\fs16\langfe1024\fs16\f0\chcbpat1\f0 -}\ilvl0 \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls0\li720\ri0\lin720\rin0\fi-360\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1024\loch\fs16\lang1024{\loch\f1\fs16\lang1024\i0\b0{\uldb Displaying variables value and classes/structures members}}{\loch\f1\fs16\lang1024ID_DISPLAYDEBUG}
\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\fs16\lang1024\fs16\langfe1024\fs16\f0\chcbpat1\f0 -}\ilvl0 \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls0\li720\ri0\lin720\rin0\fi-360\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1024\loch\fs16\lang1024{\loch\f1\fs16\lang1024\i0\b0{\uldb Backtracing}}{\loch\f1\fs16\lang1024ID_BACKTRACE}
\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\fs16\lang1024\fs16\langfe1024\fs16\f0\chcbpat1\f0 -}\ilvl0 \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls0\li720\ri0\lin720\rin0\fi-360\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1024\loch\fs16\lang1024{\loch\f1\fs16\lang1024\i0\b0{\uldb Using the CPU Window}}{\loch\f1\fs16\lang1024ID_CPUWINDOW}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 The output Dev-C++ receives from GDB is displayed in the {\i Debug Output} sheet at the bottom of Dev-C++.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 This output is probably only interesting if you are familiar with GDB. You can also send commands directly to it (if you do not know GDB, you can type the {\i help} command for to have a list) by using the edit box just above the output (see screenshot below).}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 \{bmc debug_log.bmp\}}
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote #\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  ID_BREAKPOINT}}}
{\loch\f1\fs20\lang1033{\*\cs79\cf0{\*\updnprop5800}\up5\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\fs20\fs20\fs20 {\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  Setting Breakpoints}}}
{\super K{\footnote K\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  breakpoint;debug;debugging;setting;}}}
}}{\loch\f1\fs16\lang1033{\fs28\cf6  {\b Setting Breakpoints}}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 You can use breakpoints to pause your program at a certain instruction (line of code). }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 To add a breakpoint, first select the line of code where you want to break by simply positioning the text cursor on it. Now, click on the {\i Debug} menu, then on {\i Toggle Breakpoint} (shortcut : Ctrl+F5). Clicking on the gutter (at the left of the editor) in fron
t of your line will have the same effect :}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 \{bmc debug_breakpoint.bmp\}}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 When you will {\lang1024{\uldb load the debugger}}{\langfe1024\lang1024ID_DEBUGPROCESS, if your program executes the line of code you breakpointed, Dev-C++ will warn you that you\rquote re breakpoint was reached by changing the line color to blue :}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1024\loch\fs16\lang1024 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1024\i0\b0{\lang1024 \{bmc debug_current.bmp\}}}{\loch\f1\fs16\lang1033 }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 You can now {\lang1024{\uldb examine the data in your program}}{\langfe1024\lang1024ID_DISPLAYDEBUG.or {\uldb step through your program.}ID_STEPDEBUG}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote #\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  ID_STEPDEBUG}}}
{\loch\f1\fs20\lang1033{\*\cs79\cf0{\*\updnprop5800}\up5\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\fs20\fs20\fs20 {\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  Stepping in your program}}}
{\super K{\footnote K\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  code;continue;debug;into;step;program;}}}
}}{\loch\f1\fs16\lang1033{\fs20  }{\b\fs28\cf6 Stepping in your program}}
\par \pard\plain \ltrpar\s6\cf6{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs28\lang1033\ab\ltrch\dbch\afs28\langfe1036\ab\loch\fs28\lang1033\b 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Once a breakpoint has been reached, you can step into the code of your application in different ways :}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 - {\b Next Step}  \{bmc icon_nextstep.bmp\} (shortcut : F7) : }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li0\ri0\lin0\rin0\fi708\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 The debugger will step one instruction (line of code) in your program}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 - {\b Step Into }(shortcut : Shit+F7) : }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li0\ri0\lin0\rin0\fi708\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 The debugger will step one instruction. If that instruction is a function call it will jump into it.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 - {\b Continue }\{bmc icon_continue.bmp\} (shortcut\~: Ctrl+F7) : }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li0\ri0\lin0\rin0\fi708\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 The debugger will continue the execution of your program until another breakpoint is reached{\b .}}
\par \pard\plain \ltrpar\s11\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1024\loch\fs20\lang1024 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote #\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  ID_DISPLAYDEBUG}}}
{\loch\f1\fs20\lang1033{\*\cs79\cf0{\*\updnprop5800}\up5\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\fs20\fs20\fs20 {\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  Displaying variables value and classes/structures members}}}
{\super K{\footnote K\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  display;debug;value;variable;class;structure;member;show;}}}
}}{\loch\f1\fs16\lang1033{\fs20  }{\b\fs28\cf6 Displaying variables value and classes/structures members}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 One of the other interest of debugging is the possibility to display the value of your variables at a given time.}
\par {\loch\f1\fs16\lang1033\i0\b0 Dev-C++ is able to show you in a convenient way the contents of your classes, strings, structures/unions, arrays and other variables, in the Debug Variable Browser, shown below :}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 \{bmc debug_browser.bmp\}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 You can display your variables (after you reached a breakpoint) in two different ways :}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 - Click on the {\i Add Watch }\{bmc icon_addwatch.bmp\} ( shortcut : F4) button, type the name of your variable in the dialog, and press OK. If you select a word in the current source file and press F4, it will add a watch of the selected text without asking for 
a variable name.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 - Point your mouse over a variable in your source code (if {\i Watch variable under mouse} is enabled in {\lang1024{\uldb Environment Options}}{\langfe1024\lang1024ID_ENVIRONMENT) and it will be added to the watch list.}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s10\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ab\ltrch\dbch\af1\afs24\langfe1033\ab\loch\f1\fs24\lang1033\b {\loch\f1\fs16\lang1033\i0\b Important Notes: }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 - When using pointers to structures or classes, if you want to display all the members of variable {\i my_pointer }then you need to watch {\i *my_pointer} (\lquote *\rquote  is the value-operator). Watching only {\i my_pointer} would just display the address contained in {\i my_pointer}.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 - Sometimes the debugger may not know the type of a pointer, and cannot display all of the members of the pointed structure or class. You can bypass this problem by casting your watched variable. For example, if the debugger cannot show the contents of {\i my_
pointer} of type MyPointer, you could try adding the watch variable: {\i *(MyPointer *)my_pointer}}
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote #\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  ID_BACKTRACE}}}
{\loch\f1\fs20\lang1033{\*\cs79\cf0{\*\updnprop5800}\up5\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\fs20\fs20\fs20 {\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  Backtracing}}}
{\super K{\footnote K\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  debug;backtrace;function;call;}}}
}}{\loch\f1\fs16\lang1033{\fs20  }{\b\fs28\cf6 Backtracing}}
\par \pard\plain \ltrpar\s6\cf6{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs28\lang1033\ab\ltrch\dbch\afs28\langfe1036\ab\loch\fs28\lang1033\b 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Backtracing is the debugging concept that tells you which functions were called before reaching a breakpoint or an interruption (like an access violation). }
\par {\loch\f1\fs16\lang1033\i0\b0 Let\rquote s do a simple test, with the following code:}
\par 
\par \pard\plain \ltrpar\s6\cf8{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 #include <stdio.h>}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f3\fs16\lang1033\i0\b\f3{\b void}}{\loch\f3\fs16\lang1033\f3\f3\f3 test2()}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs16\lang1033\ltrch\dbch\af3\afs16\langfe1036\loch\f3\fs16\lang1033 {\loch\f3\fs16\lang1033\i0\b0 \{}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f3\fs16\lang1033\i0\b0\f3   printf({\cf2 \ldblquote hello\\n\rdblquote });  {\cf7 /* Put a breakpoint on this line */}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs16\lang1033\ltrch\dbch\af3\afs16\langfe1036\loch\f3\fs16\lang1033 {\loch\f3\fs16\lang1033\i0\b0 \}}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs24\lang1033\ltrch\dbch\af3\afs24\langfe1033\loch\f3\fs24\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs16\lang1033\ltrch\dbch\af3\afs16\langfe1036\loch\f3\fs16\lang1033{\loch\f3\fs16\lang1033\i0\b{\b void}}{\loch\f3\fs16\lang1033 test()}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs16\lang1033\ltrch\dbch\af3\afs16\langfe1036\loch\f3\fs16\lang1033 {\loch\f3\fs16\lang1033\i0\b0 \{}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs24\lang1033\ltrch\dbch\af3\afs24\langfe1033\loch\f3\fs24\lang1033 {\loch\f3\fs16\lang1033\i0\b0   test2();}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs16\lang1033\ltrch\dbch\af3\afs16\langfe1036\loch\f3\fs16\lang1033 {\loch\f3\fs16\lang1033\i0\b0 \}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs16\lang1033\ltrch\dbch\af3\afs16\langfe1036\loch\f3\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f3\fs16\lang1033\i0\b\f3{\b int}}{\loch\f3\fs16\lang1033\f3\f3\f3 main({\b int }argc, {\b char} **argv)}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs16\lang1033\ltrch\dbch\af3\afs16\langfe1036\loch\f3\fs16\lang1033 {\loch\f3\fs16\lang1033\i0\b0 \{}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs16\lang1033\ltrch\dbch\af3\afs16\langfe1036\loch\f3\fs16\lang1033 {\loch\f3\fs16\lang1033\i0\b0   test();}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f3\fs16\lang1033\i0\b0\f3   {\b return} 0;}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs16\lang1033\ltrch\dbch\af3\afs16\langfe1036\loch\f3\fs16\lang1033 {\loch\f3\fs16\lang1033\i0\b0 \}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Put a breakpoint in function test2() on the printf() statement, and load the debugger. The breakpoint should be reached quite instantly, now go to the {\i Debug} sheet and click on the {\i Backtrace} button. The following list should appear:}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 \{bmc debug_backtrace.bmp\}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This correctly shows the list of functions that have been called (since the start of the program) before reaching the breakpoint. Clicking on a function in this list will bring you to it\rquote s implementation in your source code.}
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote #\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  ID_CPUWINDOW}}}
{\loch\f1\fs20\lang1033{\*\cs79\cf0{\*\updnprop5800}\up5\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\fs20\fs20\fs20 {\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  Using CPU windows}}}
{\super K{\footnote K\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  debug;CPU;registers;display;}}}
}}{\loch\f1\fs16\lang1033{\fs20  }{\b\fs28\cf6 Using CPU window}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Dev-C++ provides a CPU window to expert developers who want access to the status of CPU registers and instructions. }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 To show the CPU window, wait for a breakpoint or interruption to raise in your program and go to the {\i Debug} menu, then click {\i CPU Window}. The following dialog will appear:}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 \{bmc debug_cpu.bmp\}{\fs20  }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0 On the left, you can find the assembler instructions of the current function. You can display the assembler code of any other function by typing its name in the {\i Function} field, then pressing the Enter key. You can also select the syntax of the assembler in
structions: AT&T or Intel.}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0 On the right, the content of CPU registers is displayed.}
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote #\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  ID_INTEGRATEDTEMPLATE}}}
{\loch\f1\fs20\lang1033{\*\cs79\cf0{\*\updnprop5800}\up5\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\fs20\fs20\fs20 {\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  Integrated Templates}}}
{\super K{\footnote K\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  integrated;template;templates;}}}
}}{\loch\f1\fs16\lang1033{\fs28\cf6  {\b Integrated Templates}}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 {\loch\f1\fs20\lang1033\i0\b0 Dev-C++ uses a template system to be able to create specific projects on the fly. Templates usually contain a set of source files and project file which include the minimal code and all the compiler and linker options, which are necessary to compile the sp
ecific type of program. }
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote #\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  ID_GETTINGPACKAGE}}}
{\loch\f1\fs20\lang1033{\*\cs79\cf0{\*\updnprop5800}\up5\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\fs20\fs20\fs20 {\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  Getting and installing Packages}}}
{\super K{\footnote K\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  packages;installing;getting;}}}
}}{\loch\f1\fs16\lang1033{\fs28\cf6  {\b Getting and installing Packages}}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 {\loch\f1\fs20\lang1033\i0\b0 to be implemented...}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote #\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  ID_CREATEPACKAGES}}}
{\loch\f1\fs20\lang1033{\*\cs79\cf0{\*\updnprop5800}\up5\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\fs20\fs20\fs20 {\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  Creating your Packages}}}
{\super K{\footnote K\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  creating;packages;}}}
}}{\loch\f1\fs16\lang1033{\fs28\cf6  {\b Creating Packages}}}
\par \pard\plain \ltrpar\s11\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1024\loch\fs20\lang1024 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 {\loch\f1\fs20\lang1033\i0\b0 to be implemented...}
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote #\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1036 {\loch\f1\fs16\lang1036\i0\b0  ID_COMPILEROPTIONS}}}
{\loch\f1\fs20\lang1033{\*\cs79\cf0{\*\updnprop5800}\up5\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\fs20\fs20\fs20 {\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1036 {\loch\f1\fs16\lang1036\i0\b0  Compiler Options}}}
{\super K{\footnote K\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1036 {\loch\f1\fs16\lang1036\i0\b0  compiler;options;}}}
}}{\loch\f1\fs16\lang1033{\fs28\cf6  {\b Compiler Options}}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0 To access the Compiler Options dialog, click on the \lquote Tools\rquote  menu, then on \lquote Compiler Options\rquote .}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ab\ltrch\dbch\af7\afs16\langfe1036\ab\loch\f7\fs16\lang1033\b 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ab\ltrch\dbch\af7\afs16\langfe1036\ab\loch\f7\fs16\lang1033\b {\loch\f7\fs16\lang1033\i0\b Compiler}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Compiler set to configure}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Here, you can maintain different compiler profiles. Each profile has it's own settings and options, so that you can easily switch between different presets (for example, MingW32 and Cygwin). The default compiler that comes bundled with Dev-C++ is MingW32.
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  There are three buttons to add, delete and rename the compiler set.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  7}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Add the following commands when calling compiler}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f7\fs16\lang1033\i0\b0{\f7  Here you can specify additional command-line options to be passed to the GCC compiler when compiling your project or file. Check the MingW32 manual (available at the website, }}{\loch\f1\fs16\lang1033{\field{\*\fldinst HYPERLINK "http://www.mingw.org/" }{\fldrslt \*\cs85\cf7\ul\rtlch\ltrch\dbch\loch\f1\fs24\lang1033{\ul\f7\cf3 www.mingw.org}}}{\f7  for a list of command-line arguments.}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033  
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Add these commands to the linker command-line}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Here you can specify options to be passed onto the linker (ld.exe). You can specify library files here.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033  
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Compile delay}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  This option is present to provide a delay before compiling. Normally, you will not use this. If make complains of the timestamp being invalid, try specifying a delay here.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033  
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Use fast but imperfect dependancy generation}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  By default, Dev-C++ will check all files and headers for dependancy information, and update the makefile accordingly. If you find that it's taking too much time, you can prevent this by enabling this option.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ab\ltrch\dbch\af7\afs16\langfe1036\ab\loch\f7\fs16\lang1033\b {\loch\f7\fs16\lang1033\i0\b Settings / C compiler}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Support all ANSI standard C programs}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Option -ansi: Will attempt to be as ANSI conformant as possible.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Attempt to support some aspects of traditional C pre-processors}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f7\fs16\lang1033\i\b0\f7{\i  }}{\loch\f7\fs16\lang1033\f7\f7\f7Option -traditional-cpp : Will attempt to make the pre-processor behave as traditional ones do.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Inhibit all warning messages}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Option -w: No warnings will be displayed.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ab\ltrch\dbch\af7\afs16\langfe1036\ab\loch\f7\fs16\lang1033\b {\loch\f7\fs16\lang1033\i0\b Settings / C++ compiler}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ab\ltrch\dbch\af7\afs16\langfe1036\ab\loch\f7\fs16\lang1033\b 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Turn off all access checking}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Option -fno-access-control}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Accept $ in identifiers}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Option -fdollar-in-identifiers: Will allow $ to be used in variable and function names. Cannot be used with GCC 3.2.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Use heuristics to compiler faster}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Option -fsave-memoized}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ab\ltrch\dbch\af7\afs16\langfe1036\ab\loch\f7\fs16\lang1033\b {\loch\f7\fs16\lang1033\i0\b Settings / Code generation}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ab\ltrch\dbch\af7\afs16\langfe1036\ab\loch\f7\fs16\lang1033\b 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Enable exception handling}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Option -fexceptions}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Use same size for double and float}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Option -fshort-double}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Put extra commentary information in the generated assembler}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f7\fs16\lang1033\i0\b0\f7  Option -fverbose-asm: The intermediary assembler files generated will have extra comments. Only useful if they're being saved (using the {\b -S} command-line option).}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ab\ltrch\dbch\af7\afs16\langfe1036\ab\loch\f7\fs16\lang1033\b {\loch\f7\fs16\lang1033\i0\b Settings / Code profiling}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Generate profiling info for analysis}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Option -pg: Writes extra information into the generated program files to use with the profiler. The profiler lets you see where maximum amount of the program's execution time is being spent, so that when you're optimizing the program, you optimize only th
e parts that make the difference. This option should be disabled when building retail/final versions. It should be used only in debug builds.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ab\ltrch\dbch\af7\afs16\langfe1036\ab\loch\f7\fs16\lang1033\b {\loch\f7\fs16\lang1033\i0\b Settings / Linker}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Link an Objective C program}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Option -lobjc}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Generate debugging information}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Option -g3: Writes debug information into the generate binaries. This lets you debug it with the integrated debugger.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Do not use standard system startup files or libraries}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Option -nostdlib}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Do not create a console window}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Option -mwindows: Instructs GCC to build a Windows GUI application.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ab\ltrch\dbch\af7\afs16\langfe1036\ab\loch\f7\fs16\lang1033\b {\loch\f7\fs16\lang1033\i0\b Settings / Optimization}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ab\ltrch\dbch\af7\afs16\langfe1036\ab\loch\f7\fs16\lang1033\b 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Perform a number of minor optimizations}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f7\fs16\lang1033\i\b0\f7{\i  }}{\loch\f7\fs16\lang1033\f7\f7\f7Option -fexpensive-optimizations}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ab\ltrch\dbch\af7\afs16\langfe1036\ab\loch\f7\fs16\lang1033\b {\loch\f7\fs16\lang1033\i0\b Settings / Optimization / Further Optimizations}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0 Here, you can select the optimization level.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Optimize}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Option -O1}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Optimize more}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Option -O2}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Best optimization}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Option -O3}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ab\ltrch\dbch\af7\afs16\langfe1036\ab\loch\f7\fs16\lang1033\b {\loch\f7\fs16\lang1033\i0\b Directories}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Binaries}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Specifies the locations of the compiler (executables).}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Libraries}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Specifies the locations of the library files (*.a).}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 C includes}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Specifies the locations of the headers (*.h) for C programs.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 C++ includes}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Specifies the locations of the headers (*.h, *.hpp) for C++ programs.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ab\ltrch\dbch\af7\afs16\langfe1036\ab\loch\f7\fs16\lang1033\b {\loch\f7\fs16\lang1033\i0\b Programs}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0 Here you can specify the filenames of the different compiler executable components.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote #\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1036 {\loch\f1\fs16\lang1036\i0\b0  ID_ENVIRONMENT}}}
{\loch\f1\fs20\lang1033{\*\cs79\cf0{\*\updnprop5800}\up5\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\fs20\fs20\fs20 {\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1036 {\loch\f1\fs16\lang1036\i0\b0  Environment Options}}}
{\super K{\footnote K\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1036 {\loch\f1\fs16\lang1036\i0\b0  environment;options;}}}
}}{\loch\f1\fs16\lang1033{\fs28\cf6  {\b Environment Options}}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0 To access the Environment Options dialog, click on the \lquote Tools\rquote  menu, then on \lquote Environment Options\rquote .}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs20\lang1033\ltrch\dbch\af7\afs20\langfe1036\loch\f7\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ab\ltrch\dbch\af7\afs16\langfe1036\ab\loch\f7\fs16\lang1033\b {\loch\f7\fs16\lang1033\i0\b General}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Default to C++ on new project}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  When you create a new project, it is assumed by default to be in C++. Unselecting this will use C.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Create Backup files}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0   If enabled, whenever you save a source file in Dev-C++, a backup copy will be saved along with it. This backup will be overwritten successively.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Minimize on run}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  If enabled, Dev-C++ will minimize itself when you execute your program from within it (using the `Run' command under `Execute'.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Show toolbars in Full-screen}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  By default, toolbars are hidden when Dev-C++ is made full-screen. If this option is enabled, they will be shown all the time.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Double-click to open project-manager files}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  If this option is enabled, you'll need to double-click on the nodes in project-manager to open them in the editor. Otherwise, you would single-click.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Auto-open...}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Here, you can choose what files are automatically opened in the editor when you open a project.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ab\ltrch\dbch\af7\afs16\langfe1036\ab\loch\f7\fs16\lang1033\b {\loch\f7\fs16\lang1033\i0\b Interface}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ab\ltrch\dbch\af7\afs16\langfe1036\ab\loch\f7\fs16\lang1033\b 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Max files in re-open menu}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Here, you can specify the number of files Dev-C++ keeps track of in the Reopen menu. Older files are forgotten first.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Language}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Select your language here.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Message Window Tabs}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f7\fs16\lang1033\i0\b0\f7  Here, you can select the location of the tabs on the message windows ({\i Compiler, Resources, Compile Log, Debug,} etc.)}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Theme}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Select the theme you want Dev-C++ to use.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 No splash screen on startup}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  If enabled, it prevents Dev-C++ for displaying a logo when it is loading.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f7\fs16\lang1033\i\b0\f7{\i Use XP theme}}{\loch\f7\fs16\lang1033\f7\f7\f7 (WinXP only)}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  If enabled, it makes Dev-C++ use Windows XP themes (bitmap title-bars, buttons, etc.).}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Open/Save dialog style}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Here you can select the type of file open/save dialog you want to see.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ab\ltrch\dbch\af7\afs16\langfe1036\ab\loch\f7\fs16\lang1033\b {\loch\f7\fs16\lang1033\i0\b Files and directories}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ab\ltrch\dbch\af7\afs16\langfe1036\ab\loch\f7\fs16\lang1033\b 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 User's default directory}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Specifies the default location that Dev uses (when creating projects, opening, saving, etc.)}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Templates}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f7\fs16\lang1033\i0\b0\f7  Specifies the location of the Dev-C++ project templates (the ones displayed when you click on `{\i New Project}').}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Icon library path}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Specifies the location of the icons for use in your projects.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Language Files path}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Specifies the location of the Dev-C++ language files.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Splash screen image}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  You can specify an alternate splash-screen bitmap here.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ab\ltrch\dbch\af7\afs16\langfe1036\ab\loch\f7\fs16\lang1033\b {\loch\f7\fs16\lang1033\i0\b File associations}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ab\ltrch\dbch\af7\afs16\langfe1036\ab\loch\f7\fs16\lang1033\b 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Here, you can select one or more file types which Dev-C++ will associate itself with, so that the next time you open an associated file in Windows Explorer, Dev-C++ will open up automatically.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ab\ltrch\dbch\af7\afs16\langfe1036\ab\loch\f7\fs16\lang1033\b {\loch\f7\fs16\lang1033\i0\b CVS}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ab\ltrch\dbch\af7\afs16\langfe1036\ab\loch\f7\fs16\lang1033\b 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 CVS program file}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Enter the name of the CVS program executable.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Compression level}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 {\loch\f7\fs16\lang1033\i0\b0  Specify the compression level to be used.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ltrch\dbch\af7\afs16\langfe1036\loch\f7\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs16\lang1033\ai\ltrch\dbch\af7\afs16\langfe1036\ai\loch\f7\fs16\lang1033\i {\loch\f7\fs16\lang1033\i\b0 Use SSH instead of RSH}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f7\fs16\lang1033\i\b0\f7{\i  }}{\loch\f7\fs16\lang1033\f7\f7\f7Use the SSH program to connect}
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote #\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  ID_EDITORSETTINGS}}}
{\loch\f1\fs20\lang1033{\*\cs79\cf0{\*\updnprop5800}\up5\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\fs20\fs20\fs20 {\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  Editor Settings}}}
{\super K{\footnote K\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  editor;settings;}}}
}}{\loch\f1\fs16\lang1033{\fs28\cf6  {\b Editor Settings}}}
\par \pard\plain \ltrpar\s11\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1024\loch\fs20\lang1024 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 {\loch\f1\fs20\lang1033\i0\b0 to be implemented...}
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote #\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  ID_CLASSBROWSER}}}
{\loch\f1\fs20\lang1033{\*\cs79\cf0{\*\updnprop5800}\up5\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\fs20\fs20\fs20 {\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  Class Browser/Code Completion}}}
{\super K{\footnote K\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  class;browser;code;completion;}}}
}}{\loch\f1\fs16\lang1033{\fs28\cf6  {\b Class Browser / Code Completion}}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 {\loch\f1\fs20\lang1033\i0\b0 to be implemented...}
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote #\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  ID_FAQ}}}
{\loch\f1\fs20\lang1033{\*\cs79\cf0{\*\updnprop5800}\up5\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\fs20\fs20\fs20 {\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  FAQ (Frequently Asked Questions)}}}
{\super K{\footnote K\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  faq;frequently;asked;questions;}}}
}}{\loch\f1\fs16\lang1033{\fs28\cf6  {\b Frequently Asked Questions (FAQ)}}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s7\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li0\ri720\lin0\rin720\fi0\sb100\sa100\rtlch\afs24\lang1033\ab\ltrch\dbch\afs24\langfe1033\ab\loch\fs24\lang2057\b {\loch\f1\fs24\lang2057\i0\b Why can't I use {\i conio.h} functions like clrsrc()?}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Because conio.h is not part of the C standard. It is a Borland extension, and works {\b only} with Borland compilers (and perhaps some other commercial compilers). Dev-C++ uses {\field{\*\fldinst HYPERLINK "http://gcc.gnu.org/" }{\fldrslt \*\cs85\cf7\ul\rtlch\ltrch\dbch\loch\f1\fs24\lang1033{\ul\cf3 GCC}}}, the GNU Compiler Collection, as it's compiler. GCC is originally a UNIX compile
r, and aims for portability and standards-compliance.\line \line If you really canot live without them, you can use Borland functions this way:\line Include conio.h to your source, and add the following file to your project : C:\\Dev-C++\\include\\conio.c (where C:\\Dev-C++ 
is where you installed Dev-C++).\line Please note that conio support is not complete.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s7\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li0\ri720\lin0\rin720\fi0\sb100\sa100\rtlch\afs24\lang1033\ab\ltrch\dbch\afs24\langfe1033\ab\loch\fs24\lang2057\b {\loch\f1\fs24\lang2057\i0\b My window keeps closing, how do I change that ?}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 You can do it this way: }
\par \pard\plain \ltrpar\s19\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li0\ri720\lin0\rin720\fi0\sb100\sa100\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1033\loch\fs16\lang2057{\loch\f3\fs20\lang1033\i0\b0{\*\cs84\cf0\rtlch\ltrch\dbch\loch\f3\fs20\lang1033\cf8 #include <stdio.h>}}{\loch\f1\fs16\lang2057{\cf8 \line }\line {\*\cs84\cf0\rtlch\ltrch\dbch\loch\f3\fs20\lang1033{\b int}}{\*\cs84\cf0\rtlch\af1\afs20\lang1033\ltrch\dbch\af0\afs20\langfe1033\loch\f3\fs20\lang1033 main({\b int} argc, {\b char} **argv)}\line {\*\cs84\cf0\rtlch\ltrch\dbch\loch\f3\fs20\lang1033 \{}\line {\*\cs84\cf0\rtlch\ltrch\dbch\loch\f3\fs20\lang1033 \~\~printf ({\cf2 "Press ENTER to continue.\\n"});}\line {\*\cs84\cf0\rtlch\ltrch\dbch\loch\f3\fs20\lang1033 \~\~getchar (); {\i\cf7 /* wait for input */}}\line {\*\cs84\cf0\rtlch\ltrch\dbch\loch\f3\fs20\lang1033 \~\~return 0;}\line {\*\cs84\cf0\rtlch\ltrch\dbch\loch\f3\fs20\lang1033 \} }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Or this way: }
\par \pard\plain \ltrpar\s19\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li0\ri720\lin0\rin720\fi0\sb100\sa100\rtlch\afs24\lang1033\ltrch\dbch\afs24\langfe1033\loch\fs24\lang2057{\loch\f3\fs16\lang1033\i0\b0{\*\cs84\cf0\rtlch\ltrch\dbch\loch\f3\fs20\lang1033\fs16\cf8 #include <stdlib.h>}}{\loch\f1\fs24\lang2057{\fs16 \line \line {\*\cs84\cf0\rtlch\ltrch\dbch\loch\f3\fs20\lang1033{\b int}}{\*\cs84\cf0\rtlch\af1\afs20\lang1033\ltrch\dbch\af0\afs20\langfe1033\loch\f3\fs20\lang1033 main({\b int} argc, {\b char} **argv)}\line {\*\cs84\cf0\rtlch\ltrch\dbch\loch\f3\fs20\lang1033 \{}\line {\*\cs84\cf0\rtlch\ltrch\dbch\loch\f3\fs20\lang1033 \~\~system ({\cf2 "pause"}); {\i\cf7 /* execute M$-DOS' pause command */}}\line {\*\cs84\cf0\rtlch\ltrch\dbch\loch\f3\fs20\lang1033{\b \~\~return}}{\*\cs84\cf0\rtlch\af1\afs20\lang1033\ltrch\dbch\af0\afs20\langfe1033\loch\f3\fs20\lang1033 0;}\line {\*\cs84\cf0\rtlch\ltrch\dbch\loch\f3\fs20\lang1033 \}}}{\*\cs84\cf0\rtlch\ltrch\dbch\loch\f3\fs20\lang1033  }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033  
\par \pard\plain \ltrpar\s7\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li0\ri720\lin0\rin720\fi0\sb100\sa100\rtlch\afs24\lang1033\ab\ltrch\dbch\afs24\langfe1033\ab\loch\fs24\lang2057\b {\loch\f1\fs24\lang2057\i0\b After linking, i get an error like C:\\DEV-C++\\LIB\\\\libmingw32.a(main.o)(.text+0x8e): undefined reference to `WinMain@16'}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 You probably haven't declared any main() or WinMain() function in your program. }
\par 
\par \pard\plain \ltrpar\s7\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li0\ri720\lin0\rin720\fi0\sb100\sa100\rtlch\afs24\lang1033\ab\ltrch\dbch\afs24\langfe1033\ab\loch\fs24\lang2057\b {\loch\f1\fs24\lang2057\i0\b How can i provide a .def file for my DLL ?}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 Put in Project Options, Parameters sheet, Linker box : --def yourfile.def }
\par 
\par 
\par \pard\plain \ltrpar\s7\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li0\ri720\lin0\rin720\fi0\sb100\sa100\rtlch\afs24\lang1033\ab\ltrch\dbch\afs24\langfe1033\ab\loch\fs24\lang2057\b {\loch\f1\fs24\lang2057\i0\b I am having strange problems under Windows XP}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 Try to run Windows Update and make sure that you have the Program Compatibility updates. }
\par 
\par 
\par \pard\plain \ltrpar\s7\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li0\ri720\lin0\rin720\fi0\sb100\sa100\rtlch\afs24\lang1033\ab\ltrch\dbch\afs24\langfe1033\ab\loch\fs24\lang2057\b {\loch\f1\fs24\lang2057\i0\b How do i enable Debugging mode ?}
\par \pard\plain \ltrpar\s20\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li0\ri720\lin0\rin720\fi0\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s20\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li0\ri720\lin0\rin720\fi0\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Go to Compiler Options and click on the Compiler sheet. In the Linker section, put \ldblquote Yes\rdblquote  to 'Generate debugging information'. Do a 'Rebuild All' and you should be able to debug now.}
\par \pard\plain \ltrpar\s20\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li0\ri720\lin0\rin720\fi0\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033  
\par \pard\plain \ltrpar\s20\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li0\ri720\lin0\rin720\fi0\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s7\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li0\ri720\lin0\rin720\fi0\sb100\sa100\rtlch\afs24\lang1033\ab\ltrch\dbch\afs24\langfe1033\ab\loch\fs24\lang2057\b {\loch\f1\fs24\lang2057\i0\b When I launch Dev-C++ i get the message saying 'WININET.DLL' or 'MSCVRT.DLL' or \lquote SHFOLDER.DLL\rquote  not found}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang2057 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 You are missing a Windows DLL, which you can download from Microsoft site or {\uldb here}{\v !ExecFile(}
\lquote http://www.rocketdownload.com/supfiles.htm\rquote )}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s7\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li0\ri720\lin0\rin720\fi0\sb100\sa100\rtlch\afs24\lang1033\ab\ltrch\dbch\afs24\langfe1033\ab\loch\fs24\lang2057\b {\loch\f1\fs24\lang2057\i0\b The size of the executable generated is huged, why ?}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 Be sure you didn't check "Generate debugging information" in Compiler Options, Linker sheet }
\par 
\par \pard\plain \ltrpar\s7\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li0\ri720\lin0\rin720\fi0\sb100\sa100\rtlch\afs24\lang1033\ab\ltrch\dbch\afs24\langfe1033\ab\loch\fs24\lang2057\b {\loch\f1\fs24\lang2057\i0\b How to use assembly with Dev-C++ ?}
\par \pard\plain \ltrpar\s20\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li0\ri720\lin0\rin720\fi0\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0 The "GNU as" assembler uses AT&T syntax (not Intel). \line Here's an example of such a syntax :\line \line // 2 global variables\line int AdrIO;\line static char ValIO;\line \line void MyFunction(..........)\line \{\line __asm("mov _AdrIO, %dx") ; // loading 16 bits register\line __asm("mov _ValIO, %al") ;
 // loading 8 bits register\line /* \line Don't forget the underscore _ before each global variable names !\line */\line __asm("mov %ax,%dx") ; // AX --> DX\line \} }
\par \pard\plain \ltrpar\s20\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li0\ri720\lin0\rin720\fi0\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s7\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li0\ri720\lin0\rin720\fi0\sb100\sa100\rtlch\afs24\lang1033\ab\ltrch\dbch\afs24\langfe1033\ab\loch\fs24\lang2057\b {\loch\f1\fs24\lang2057\i0\b I am using Windows 98 and I cannot compile}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li0\ri720\lin0\rin720\fi0\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Some users have report that you need to apply several patches to your system. Here is the list of them, they can be found on {\uldb Microsoft Windows 98 download site}{\v !ExecFile(}
\lquote http://www.microsoft.com/windows98/downloads/corporate.asp\rquote )\line \line 47569us.exe - labeled as Windows9
8SE shutdown\line dcom98.exe - see also this {\uldb page}{\v !ExecFile(}
\lquote http://www.microsoft.com/com/dcom/dcom98/dcom1_3.asp\rquote )\line DX81eng.exe - latest version of DirectX (this is 11MB, and cannot be uninstalled without reinstalling Windows 98. You might want to try this one last in ca
se the other above didn't work, as it should update many parts of the system).}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1036\loch\fs20\lang1033 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote #\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  ID_MAILINGLIST}}}
{\loch\f1\fs20\lang1033{\*\cs79\cf0{\*\updnprop5800}\up5\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\fs20\fs20\fs20 {\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  Mailing List / Forum}}}
{\super K{\footnote K\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  mailing;list;forum;}}}
}}{\loch\f1\fs16\lang1033{\fs28\cf6  {\b Mailing List / Forum}}}
\par \pard\plain \ltrpar\s11\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs20\lang1033\ltrch\dbch\afs20\langfe1024\loch\fs20\lang1024 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 If you have programming or Dev-C++ specific questions, you can post it on the forum or on the mailing list.}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Bloodshed Software / Dev-C++ Forum : {\uldb http://bloodshed.net/forum}{\v !ExecFile('http://bloodshed.net/forum')}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Dev-C++ Mailing List : {\uldb http://bloodshed.net/devcpp-ml.html}{\v !ExecFile('http://bloodshed.net/devcpp-ml.html')}
}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic8}}}}
{\loch\f1\fs24\lang1036{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\lang1036 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 FAQ}}}}
}}{\loch\f1\fs16\lang1033{\lang1036\fs28 Dev-C++ FAQ }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 Common Questions:}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 1. When I compile my dos program and execute it, Dev-C++ minimizes and then restore in a second but nothing appears?{\v FAQ01}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 2. When executing my dos program, it closes automatically. How I can change this ?{\v FAQ02}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 3. After linking, i get the error \ldblquote C:\\DEV-C++\\LIB\\\\libmingw32.a(main.o)(.text+0x8e): undefined reference to `WinMain@16'{\v FAQ03}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 4. When I launch Dev-C++ i get the message saying \ldblquote WININET.DLL not found\rdblquote ?{\v FAQ04}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 5. When I compile a file, I get a message saying "could not find <filename> "{\v FAQ05}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 6. The EXE files created are huge. What can i do to reduce the size ?{\v FAQ06}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 7. How can i use the OpenGL library and others?{\v FAQ09}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 8. When i compile a file that contains references to Windows filename (like <\\Mydir\\myfile.h>), i get an 'unrecognized escape sequence' message?{\v FAQ10}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 9. Is there any GUI library or packages available for Dev-C++?{\v FAQ11}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 10. I am having problems using Borland specific functions such as clrscr().{\v FAQ12}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 11. The toolbars icons are showing incorrectly.{\v FAQ13}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 12. It seems i've found a problem/bug that is not specified here. What should i do?{\v FAQ14}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 13. How to use assembly (ASM) with Dev-C++?{\v FAQ16}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 FAQ01}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 FAQ01}}}}
}}{\loch\f1\fs16\lang10331. When I compile my dos program and execute it, Dev-C++ minimizes and then restore in a second but nothing appears ?}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 When creating a console application, be sure to uncheck \ldblquote Do not create a console\rdblquote  in Project Options (when working with source files only uncheck \ldblquote Create for win32\rdblquote  in}
\par {\loch\f1\fs16\lang1033\i0\b0 Compiler Options).}
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 FAQ02}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 FAQ02}}}}
}}{\loch\f1\fs16\lang10332. When executing my dos program, it closes automatically. How I can change this ?}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 You can use an input function at the end of you source, like the following example :}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #include <stdlib.h>}
\par {\loch\f1\fs16\lang1033\i0\b0 int main()}
\par {\loch\f1\fs16\lang1033\i0\b0 \{}
\par {\loch\f1\fs16\lang1033\i0\b0 system(\ldblquote PAUSE\rdblquote );}
\par {\loch\f1\fs16\lang1033\i0\b0 return 0;}
\par {\loch\f1\fs16\lang1033\i0\b0 \}}
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 FAQ03}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 FAQ03}}}}
}}{\loch\f1\fs16\lang10333. After linking, i get the error \ldblquote C:\\DEV-C++\\LIB\\\\libmingw32.a(main.o)(.text+0x8e): undefined reference to `WinMain@16'}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 You probably haven\rquote t declared any main() function in your program. Otherwise, try recompiling a second time.}
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 FAQ04}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 FAQ04}}}}
}}{\loch\f1\fs16\lang10334. When I launch Dev-C++ i get the message saying \ldblquote WININET.DLL not found\rdblquote  ?}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 If you are missing WININET.DLL on your Windows system, you can download it at: http://www.rocketdownload.com/supfiles.htm}
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 FAQ05}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 FAQ05}}}}
}}{\loch\f1\fs16\lang10335. When I compile a file, I get a message saying "could not find <filename> "}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 Make sure you included the directory where your include file resides in Project Options.}
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 FAQ06}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 FAQ06}}}}
}}{\loch\f1\fs16\lang10336. The EXE files created are huge. What can i do to reduce the size ?}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 If you want to reduce your exe file size from 330 Ko to 12 Ko for example, go to compiler options. Then click on the Linker page and uncheck "Generate debug}
\par {\loch\f1\fs16\lang1033\i0\b0 information". This will remove debugging information (if you want to debug, uncheck it). You can also click on Optimization page and check "Best optimization".}
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 FAQ07}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 FAQ07}}}}
}}{\loch\f1\fs16\lang10337. How can i use the OpenGL library and others ?}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 All the libraries that comes with Mingw reside in the Lib directory. They are all named in the following way: lib*.a}
\par {\loch\f1\fs16\lang1033\i0\b0 To link a library with your project, just add in Project options, Further option files :}
\par {\loch\f1\fs16\lang1033\i0\b0 -lopengl32}
\par {\loch\f1\fs16\lang1033\i0\b0 This is for including the libopengl32.a library. To add any other library, just follow the same syntax: }
\par {\loch\f1\fs16\lang1033\i0\b0 Type -l (L in lowercase) plus the base name of the library (filename without "lib" and the ".a" extension).}
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 FAQ08}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 FAQ08}}}}
}}{\loch\f1\fs16\lang10338. When i compile a file that contains references to Windows filename (like <\\Mydir\\myfile.h>), i get a 'unrecognized escape sequence' message ?}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 The Mingw compiler understands paths in the Unit style (/mydir/myfile.h). Try replacing the \\ in the filename by / }
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 FAQ09}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 FAQ09}}}}
}}{\loch\f1\fs16\lang10339. Is there any GUI library or packages available for Dev-C++ ? }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 You can download extra packages for Dev-C++ at http://www.bloodshed.net/dev/}
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 FAQ10}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 FAQ10}}}}
}}{\loch\f1\fs16\lang103310. I am having problems using Borland specific functions such as clrscr() }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 Include conio.h to your source, and add C:\\Dev-C++\\Lib\\conio.o to "Further Object Files" in Project Options (where C:\\Dev-C++ is where you installed Dev-C++)}
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 FAQ11}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 FAQ11}}}}
}}{\loch\f1\fs16\lang103311. The toolbars icons are showing incorrectly.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 On some screen resolutions, toolbars icons may show up incorrectly. You should try changing your screen resolution, or disable toolbars from the View menu in Dev-C++}
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 FAQ12}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 FAQ12}}}}
}}{\loch\f1\fs16\lang103312. It seems i've found a problem/bug that is not specified here. What should i do ?}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 First, you should try doing a "Check for Dev-C++ update" (in Help menu) to know if a new version has come that may correct this problem. If there are no new version or}
\par {\loch\f1\fs16\lang1033\i0\b0 the problem wasn't fixed then please send an email describing the bug to : dev@bloodshed.net}
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 FAQ13}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 FAQ13}}}}
}}{\loch\f1\fs16\lang103313. How to use assembly with Dev-C++ ?}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 The assembler uses AT&T (not Intel). Here's an example of such a syntax :}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 // 2 global variables}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int AdrIO ;}
\par {\loch\f1\fs16\lang1033\i0\b0 static char ValIO ;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 void MyFunction(..........) }
\par {\loch\f1\fs16\lang1033\i0\b0 \{}
\par {\loch\f1\fs16\lang1033\i0\b0 __asm("mov %dx,_AdrIO") ; // loading 16 bits register}
\par {\loch\f1\fs16\lang1033\i0\b0 __asm("mov %al,_ValIO") ; // loading 8 bits register}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 /*}
\par {\loch\f1\fs16\lang1033\i0\b0 Don't forget the underscore _ before each global variable names !}
\par {\loch\f1\fs16\lang1033\i0\b0 */}
\par {\loch\f1\fs16\lang1033\i0\b0 __asm("mov %dx,%ax") ; // AX --> DX}
\par {\loch\f1\fs16\lang1033\i0\b0 \}}
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic27}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Making and Using Templates}}}}
}}{\loch\f1\fs16\lang1033{\fs28 Making and using Templates }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Dev-C++ can create and manage template files. Those templates contains information for creating automatically specific projects of your own. Dev-C++ contains 5 default projects, but it lets you design your own too with templates.}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Making templates:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 To create a new template, click on the File menu and then on \ldblquote New template file\rdblquote .}
\par {\loch\f1\fs16\lang1033\i0\b0 This will bring you the Template Builder, which creates and registers template files in Dev-C++. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Template Information: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Enter the name, description and category of your template. You can also select an icon, which will be used by the executable generated after compiling a template project.}
\par 
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Editor information:}}{\loch\f1\fs16\lang1033 Here you can set the cursor position that will be set when creating a template file. For example, if your templates contains the following default code:}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 int main()}
\par {\loch\f1\fs16\lang1033\i0\b0 \{}
\par     
\par {\loch\f1\fs16\lang1033\i0\b0 \}}
\par {\loch\f1\fs16\lang1033\i0\b0 you should put the following cursor position : }
\par {\loch\f1\fs16\lang1033\i0\b0 Column = 4 (like for a TAB)}
\par {\loch\f1\fs16\lang1033\i0\b0 Row = 3 (points to the third line, where the text is empty).}
\par {\loch\f1\fs16\lang1033\i0\b0 You need to set cursor position for C and C++ codes.}
\par 
\par      
\par {\loch\f1\fs16\lang1033\i0\b0 Project information:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This is for setting the default options your template will generate for a project. They are the same as in Project Options.}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Code: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Type in the text fields the default C/C++ codes that will be used when creating a project from your template. Default code can be for example:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #include <stdio.h>}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int main()}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 \{}
\par 
\par     
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 When you are ready to save and add your file to the Template list, click on the Save button, and type a filename in the dialog box that follows.}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Using templates:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Creating a project from your template is the same as for creating usual projects. Click on the File menu in Dev-C++, then on \ldblquote New Project\'85\rdblquote . On the following dialog, click on the \ldblquote Custom Templates\rdblquote  tab sheet, this will bring you the list of available templ
ates to create a project from. Select a template and press the OK button (or double-click on the selected icon), and a new project will be created using the default options and code as you wrote in your template.}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Deleting templates:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 In the New Project dialog, select the template you are willing to delete and press the DEL (delete) button on your keyboard.}
\par 
\par 
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic29}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Compiling, Running, and Debugging}}}}
}}{\loch\f1\fs16\lang1033{\fs28 Compiling and Running }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 If you want to create the executable of your program and test it, this section will help you on how to do this.}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Compiling:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 When your sources are ready to be compiled into an executable, click on the Execute menu, then on Compile. The compilation will start and if it is successful (no errors in your program), then an executable with the name of your project will be created in y
our project\rquote s directory.}
\par {\loch\f1\fs16\lang1033\i0\b0 If you got errors after compile, the errors will be shown in the Compiler sheet.}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Running:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 If your project has been successfully compiled, you can execute it by clicking on the Execute menu, then on Run. }
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic30}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Compiler Options}}}}
}}{\loch\f1\fs16\lang1033{\f8 Compiler Options }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This section is about to explain you all the options available in Dev-C++ when running the compiler. The Compiler options dialog is available by clicking on the Options menu, then on \ldblquote Compiler options\rdblquote .}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Most of the parameters description have been taken from the GCC help file.}
\par 
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 Directories page:}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 \{bmc directories.bmp\}iex}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 You can add multiple directories to be searched for include files during compilation by checking the appropriate check box, and by typing your directory in the edit field (separate pathnames with a semicolon \ldblquote ;\rdblquote ).}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Other compiler-specific parameters can be added by checking the check box \ldblquote Add the following commands\'85\rdblquote , and by typing your commands in the edit field (separate commands by spaces). These commands can be found at Mingw32 web site.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 You can also change/add the different directories needed by Dev-C++ (separate folders with a semicolon, but only one Bin directory can be specified).}
\par 
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 C/C++ compiler page:}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 \{bmc compiler.bmp\}}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 - Support all ANSI C standard programs {\i (compiler parameter: -ansi)}:}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 This turns off certain features of GNU C that are incompatible with ANSI C, such as the asm, inline and typeof keywords, and predefined macros such as unix and vax that identify the type of system you are using.  It also enables the undesirable and rarely 
used ANSI trigraph feature, and it disables recognition of C++ style // comments.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The alternate keywords __asm__, __extension__, __inline__ and __typeof__ continue to work despite -ansi.  You would not want to use them in an ANSI C program, of course, but it is useful to put them in header files that might be included in compilations do
ne with -ansi.  Alternate predefined macros such as __unix__ and __vax__ are also available, with or without -ansi.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The -ansi option does not cause non-ANSI programs to be rejected gratuitously.  For that, -pedantic is required in addition to -ansi.  See Warning Options.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The macro __STRICT_ANSI__ is predefined when the -ansi option is used.  Some header files may notice this macro and refrain from declaring certain functions or defining certain macros that the ANSI standard doesn't call for; this is to avoid interfering wi
th any programs that might use these names for other things.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The functions alloca, abort, exit, and _exit are not builtin functions when -ansi is used.}
\par 
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 - Try to support some aspects of the traditional C preprocessor {\i (compiler parameter: -traditional)}:}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 All extern declarations take effect globally even if they are written inside of a function definition.  This includes implicit declarations of functions.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The newer keywords typeof, inline, signed, const and volatile are not recognized.  (You can still use the alternative keywords such as __typeof__, __inline__, and so on.)}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Comparisons between pointers and integers are always allowed. Integer types unsigned short and unsigned char promote to unsigned int.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Out-of-range floating point literals are not an error.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Certain constructs which ANSI regards as a single invalid preprocessing number, such as 0xe-0xd, are treated as expressions instead.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 String \ldblquote constants\rdblquote  are not necessarily constant; they are stored in writable space, and identical looking constants are allocated separately.  (This is the same as the effect of \endash fwritable-strings.)}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Ordinarily, GNU C follows ANSI C: automatic variables not declared volatile may be clobbered.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The character escape sequences \\x and \\a evaluate as the literal characters x and a respectively.  Without \endash traditional, \\x is a prefix for the hexadecimal representation of a character, and \\a produces a bell.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 In C++ programs, assignment to this is permitted with \endash traditional.  (The option \endash fthis-is-variable also has this effect.) }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 You may wish to use \endash fno-builtin as well as \endash traditional if your program uses names that are normally GNU C builtin functions for other purposes of its own.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 You cannot use \endash traditional if you include any header files that rely on ANSI C features.  Some vendors are starting to ship systems with ANSI C header files and you cannot use \endash traditional on such systems to compile files that include any system headers.}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b - Show all warnings }}{\loch\f1\fs16\lang1033(compiler parameter : -w){\b :}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 This will tell the compiler to show warnings all the warnings.}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b - Turn off all access checking }}{\loch\f1\fs16\lang1033(compiler parameter : -fno-accesschecking){\b :}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Turn off all access checking.  This switch is mainly useful for working around bugs in the access control code.}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b - Accept $ in identifiers }}{\loch\f1\fs16\lang1033(compiler parameter : -fdollars-in-identifier){\b :}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Accept $ in identifiers.  You can also explicitly prohibit use of $ with the option -fno-dollars-in-identifiers.  (GNU C allows $ by default on most target systems, but there are a few exceptions.) Traditional C allowed the character $ to form part of iden
tifiers.  However, ANSI C and C++ forbid $ in identifiers.}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b - Use heuristics to compile faster }}{\loch\f1\fs16\lang1033(compiler parameter : -fsave-memorized){\b : }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Use heuristics to compile faster.  These heuristics are not enabled by default, since they are only effective for certain input files.  Other input files compile more slowly.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The first time the compiler must build a call to a member function (or reference to a data member), it must (1) determine whether the class implements member functions of that name; (2) resolve which member function to call (which involves figuring out wha
t sorts of type conversions need to be made); and (3) check the visibility of the member function to the caller.  All of this adds up to slower compilation.  Normally, the second time a call is made to that member function (or reference to that data member
), it must go through the same lengthy process again.  This means that code like this:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 cout << "This " << p << " has " << n << " legs.\\n";}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 makes six passes through all three steps.  By using a software cache, a "hit" significantly reduces this cost.  Unfortunately, using the cache introduces another layer of mechanisms which must be implemented, and so incurs its own overhead.  -fmemoize-look
ups enables the software cache.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Because access privileges (visibility) to members and member functions may differ from one function context to the next, G++ may need to flush the cache.  With the -fmemoize-lookups flag, the cache is flushed after every function that is compiled.  The -fs
ave-memoized flag enables the same software cache, but when the compiler determines that the context of the last function compiled would yield the same access privileges of the next function to compile, it preserves the cache.  This is most helpful when de
fining many member functions for the same class: with the exception of member functions which are friends of other classes, each member function has exactly the same access privileges as every other, and the cache need not be flushed.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The code that implements these flags has rotted; you should probably avoid using them.}
\par 
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 Code generation/Optimization page:}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 \{bmc code.bmp\}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 \tab }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b - Enable exception handling }}{\loch\f1\fs16\lang1033(compiler parameter: -fexceptions){\b :}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 \tab }
\par {\loch\f1\fs16\lang1033\i0\b0 Enable exception handling, and generate extra code needed to propagate exceptions.  If you do not specify this option, GNU CC enables it by default for languages like C++ that normally require exception handling, and disabled for languages like C that do n
ot normally require it.  However, when compiling C code that needs to interoperate properly with exception handlers written in C++, you may need to enable this option.  You may also wish to disable this option if you are compiling older C++ programs that d
on't use exception handling.}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 - Use the same size as double as for float {\i (compiler parameter: -fshortdouble)}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 - Put extra information in generated assembly code {\i (compiler parameter: -fverbose-asm)}:}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Put extra commentary information in the generated assembly code to make it more readable.  This option is generally only of use to those who actually need to read the generated assembly code (perhaps while debugging the compiler itself).}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 -fno-verbose-asm, the default, causes the extra information to be omitted and is useful when comparing two assembler files.}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b - Optimize }}{\loch\f1\fs16\lang1033(compiler parameter: -O){\b :}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Optimize.  Optimizing compilation takes somewhat more time, and a lot more memory for a large function.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Without -O, the compiler's goal is to reduce the cost of compilation and to make debugging produce the expected results.  Statements are independent: if you stop the program with a breakpoint between statements, you can then assign a new value to any varia
ble or change the program counter to any other statement in the function and get exactly the results you would expect from the source code.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Without -O, the compiler only allocates variables declared register in registers.  The resulting compiled code is a little worse than produced by PCC without -O.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 With -O, the compiler tries to reduce code size and execution time.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 When you specify -O, the compiler turns on -fthread-jumps and -fdefer-pop on all machines.  The compiler turns on -fdelayed-branch on machines that have delay slots, and -fomit-frame-pointer on machines that can support debugging even without a frame point
er.  On some machines the compiler also turns on other flags.}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b - Best optimization }}{\loch\f1\fs16\lang1033(compiler parameter: -O3){\b  :}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Optimize even more. GNU CC performs nearly all supported optimizations that do not involve a space-speed tradeoff. As compared to -O, this option increases both compilation time and the performance of the generated code.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 -O3 turns on all optional optimizations like for loop unrolling and function inlining.  It also turns on the -fforce-mem option on all machines and frame pointer elimination on machines where doing so does not interfere with debugging and also turns on the
 inline-functions option.}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b - Perform a number of minor optimizations }}{\loch\f1\fs16\lang1033(compiler parameter: -fexpensive-optimizations){\b : }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Perform a number of minor optimizations that are relatively expensive.}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Linker Page:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 \{bmc linker.bmp\}}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 - Link an objective C program {\i (compiler parameter: -lobjc)}:}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 You need this special case of the -l option in order to link an Objective C program.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 - Generate debugging information (compiler parameter: -ggdb) :}
\par {\loch\f1\fs16\lang1033\i0\b0 Produce debugging information for use by GDB.  This means to use the most expressive format available (DWARF 2, stabs, or the native format if neither of those are supported), including GDB extensions if at all possible.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 - Do not use standard system files or libraries}
\par {\loch\f1\fs16\lang1033\i0\b0 Do not use the standard system startup files or libraries when linking.  No startup files and only the libraries you specify will be passed to the linker.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 One of the standard libraries bypassed by -nostdlib and -nodefaultlibs is libgcc.a, a library of internal subroutines that GNU CC uses to overcome shortcomings of particular machines, or special needs for some languages. In most cases, you need libgcc.a ev
en when you want to avoid other standard libraries.  In other words, when you specify -nostdlib or -nodefaultlibs you should usually specify -lgcc as well.  This ensures that you have no unresolved references to internal GNU CC library subroutines.  (For e
xample, __main, used to ensure C++ constructors will be called; see collect2.)}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 - Compile for Win32 \endash  no console {\i (compiler parameter : -mwindows)}:}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 This is used when working on source files (for projects, use \ldblquote Do not create a console\rdblquote  in Project Options). It will tell the linker to create a windows program with no dos console.}
\par 
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic31}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Introduction}}}}
}}{\loch\f1\fs16\lang1033Help v1.02B}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 \{bmc splash.BMP\}}
\par  
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Bloodshed Software:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Bloodshed Software is a non-profit organization devoted to serve programmers and internet users by providing them free softwares and free internet services.}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 About Dev-C++:}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Dev-C++ is a full-featured integrated development environment (IDE), which is able to create Windows (GUI, console, DLLs...) C/C++ programs using the {\uldb Mingw}{\v !ExecFile('http://www.mingw.org')}
 compiler system or theorically any GCC based compiler.{\v !ExecFile('http://sources.redhat.com/cygwin/')!ExecFile('http://www.linux-mandrake.com')!ExecFile('http://gcc.gnu.org')}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Bloodshed Software: {\uldb http://www.bloodshed.net/}{\v !ExecFile('http://www.bloodshed.net')}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 About MinGW:}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 MinGW is a collection of header files and import libraries that allow one to use GCC and produce native Windows32 programs that do not rely on any 3rd-party DLLs. The current set of tools include {\uldb GNU Compiler Collection (GCC)}{\v !ExecFile('http://gcc.gnu.org/')}
, {\uldb GNU Binary Utilities (Binuti
ls)}{\v !ExecFile('http://sourceware.cygnus.com/binutils/')}
, {\uldb GNU debugger (Gdb)}{\v !ExecFile('http://sourceware.cygnus.com/gdb/')}
 , GNU make, and a assorted other utilities. We are currently working on creating a complete set of Mingw-hosted GNU toolchain, and looking for volunteers. }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 At the basic level, MinGW is a set of include files and import libraries that allow a console-mode program to use Microsoft's standard C runtime library MSVCRT.DLL (available on all NT systems, and on all stock Win9x after the original Windows 95 release (
for which it can be installed separately). Using this basic runtime, you can write console-mode ANSI compliant programs using GCC and use some of the extensions offered by MS C runtime, but cannot use the features provided by the Windows32 API. The next cr
itical piece is the w32api package, which is a set of includes and import libraries to enable the use of Windows32 API, and combined with the basic runtime, you (potentially) have full access to both the C Runtime (CRT) and Windows32 API functionality. Ple
ase see the licensing information on the various pieces. }
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 See {\uldb here}{\v !ExecFile('http://www.mingw.org/x86-win32-ports.shtml')}
 for information on how Mingw differs from Red Hat/Cygnus Cygwin and AT&T UWIN.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 If you see any errors on this help file, please contact either {\uldb Kip}!ExecFile(\ldblquote mailto:kip@zero47.com?subject=Dev-C++ 5 Help File\rdblquote ), or {\uldb Colin}!ExecFile('mailto:webmaster@bloodshed.net?subject=Dev-C++ 5 Help File').}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Credits:}
\par 
\par \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx4019\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\uldb Colin Laplace}}{\loch\f1\fs16\lang1033{\v !ExecFile('mailto:webmaster@bloodshed.net')}
 Hongli Lai Mumit Khan Jan Jaap van der Heidjen Colin Hendrix GNU coders {\uldb Kipling Warner}{\v !ExecFile('mailto:kip@zero47.com')}
 }
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Main Development... IDE updates, icons, templates... Mingw compiler Mingw compiler Mingw compiler Mingw compiler Splash screen, Help file, critic... }
\cell\row\pard \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Dev-C++ IDE development:}
\par {\loch\f1\fs16\lang1033\i0\b0 Colin Laplace and Mike Berg : Main development}
\par {\loch\f1\fs16\lang1033\i0\b0 Kipling Warner: Help System, Splash Screen...}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Mingw compiler system development:}
\par {\loch\f1\fs16\lang1033\i0\b0 Mumit Khan, J.J. Var Der Heidjen, Colin Hendrix and GNU coders...}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 VCL component authors (used in Dev-C++ IDE):}
\par {\loch\f1\fs16\lang1033\i0\b0 SynEdit : Powerful Editor, with syntax highlighting, exporting... http://synedit.sourceforge.net}
\par 
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic32}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Enviroment Options}}}}
}}{\loch\f1\fs16\lang1033{\fs28 Environment Options }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 The environment options are described for the following sheets :}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Preferences:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 \{bmc preferences.bmp\}}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Default directory:}}{\loch\f1\fs16\lang1033 You can select a directory that will be automatically use when creating, opening and saving files.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Create backup file:}}{\loch\f1\fs16\lang1033 Check this if you want Dev-C++ to create a backup of the sources when saving.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Auto-save desktop and editor\rquote s position:}}{\loch\f1\fs16\lang1033 If you want to use the same size of the editor and main window every time.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Save toolbars availability:}}{\loch\f1\fs16\lang1033 Dev-C++ will restore the toolbars depending on latest session.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 Auto-Arrange windows: Tile windows often.}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Do not show project manager:}}{\loch\f1\fs16\lang1033 Check this if you don\rquote t want to work with the Project Manager.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Make compile result window stay on top:}}{\loch\f1\fs16\lang1033  After compiling, if this option is checked the compile window result will remain stay on top.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Minimize during execution:}}{\loch\f1\fs16\lang1033 Dev-C++ will minimize when executing your program.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Show exit code after running:}}{\loch\f1\fs16\lang1033 Tells Dev-C++ to show the exit code of your program after executing it.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Give the following parameters when executing a compiled project:}}{\loch\f1\fs16\lang1033 Use this to call your program with parameters, in case it needs some.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Editor:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 \{bmc editor.bmp\}}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Editor font, size and background color:}}{\loch\f1\fs16\lang1033 You can set these options to work with what you are used to.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033  
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Show lines number:}}{\loch\f1\fs16\lang1033 This shows line numbers in the left the editor.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Auto-Indent:}}{\loch\f1\fs16\lang1033 Use Dev-C++ tab settings (intelligent tabs).}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Tab indent:}}{\loch\f1\fs16\lang1033 Select Tab size. You can only use this feature if \ldblquote Auto-Ident\rdblquote  is unchecked.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Show hint when scrolling:}}{\loch\f1\fs16\lang1033 This will show a hint with the current line number when scrolling.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Do not show scrollbars:}}{\loch\f1\fs16\lang1033 Check it if you don\rquote t want scrollbars in the editor.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 Syntax colors:}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 \{bmc syntax.bmp\}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 You can modify the different syntax color of the C and C++ grammar, by first clicking on the type you would like to change. Then, select a color by clicking, as well as a text attributes (optional).}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 You will be available to view your change in the editor in this sheet.}
\par 
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 Code completion:}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 \{bmc completion.bmp\}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Code completion is for speeding up your coding time. By pressing Ctrl+Space in the editor, a dialog will open containing a list of your usual coding text. Then you will be able to select a code and after pressing Enter it will be automatically inserted in 
the editor. You can edit them by modifying the text field on the sheet.}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Misc.:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 \{bmc misc.bmp\}}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Assign .dev files with Dev-C++:}}{\loch\f1\fs16\lang1033 This is set by default. It allows you to open Dev-C++ project files by double-clicking in the Windows Explorer.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Assign .c and .cpp files with Dev-C++:}}{\loch\f1\fs16\lang1033 This is set by default. It allows you to open .c and .cpp files by double-clicking in the Windows Explorer.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Buttons:}}{\loch\f1\fs16\lang1033 By clicking on these buttons you will be able to reset the default options of Dev-C++ and remove files associations.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Default code when creating new source files:}}{\loch\f1\fs16\lang1033 Type in the editor the code you would like to have when creating new source files.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic34}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Help Files}}}}
}}{\loch\f1\fs16\lang1033{\fs28 Help Files }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 A tutorial for making projects as well as the complete Standard Template Library guide are available by clicking on the Help menu in Dev-C++.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 These files are a good way to learn more about Dev-C++ and the C++ programming language.}
\par {\loch\f1\fs16\lang1033\i0\b0 Help files for the Mingw compiler are available at Mingw or Mumit Khan\rquote s site: }
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\uldb http://www.mingw.org/}}{\loch\f1\fs16\lang1033!ExecFile('http://www.mingw.org/')}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\uldb http://www.xraylith.wisc.edu/~khan/software/gnu-win32/}}{\loch\f1\fs16\lang1033!ExecFile('http://www.xraylith.wisc.edu/~khan/software/gnu-win32/')}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par 
\par 
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic35}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Mailing List}}}}
}}{\loch\f1\fs16\lang1033{\fs28 Mailing list }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The purpose of this mailing list is to ask and answer questions about Dev-C++ and C++ programming. Please note that you may receive a few messages from the list everyday.}
\par {\loch\f1\fs16\lang1033\i0\b0 You can subscribe to the Dev-C++ mailing list by going to the following address, where you will get all the information needed:}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\uldb http://www.bloodshed.net/devcpp-ml.html}}{\loch\f1\fs16\lang1033!ExecFile('http://www.bloodshed.net/devcpp-ml.html')}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par 
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote #\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  ID_AUTHORS}}}
{\loch\f1\fs20\lang1033{\*\cs79\cf0{\*\updnprop5800}\up5\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\fs20\fs20\fs20 {\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  Contacting authors}}}
{\super K{\footnote K\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  authors;contact;forum;}}}
}}{\loch\f1\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic36}}}}
{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Contacting the Author}}}}
} {\b\fs28\cf6 Contacting Authors}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033  
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Suggestions, remarks are always welcome, but please try to look at the FAQ or the Bloodshed forum ({\uldb http://www.bloodshed.net/forum}{\v !ExecFile('http://www.bloodshed.net/forum')}
) before asking help on a problem (90 % of problems are described there, and you can also find the last updated FAQ at ({\uldb http:/
/www.bloodshed.net/dev/faq.html}{\v !ExecFile('http://www.bloodshed.net/dev/faq.html')}
).}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Colin Laplace at {\uldb haiku@bloodshed.net}{\v !ExecFile('mailto:haiku@bloodshed.net')}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Hongli Lai at {\uldb h.lai@chello.nl}{\v !ExecFile('mailto:h.lai@chello.nl')}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Yiannis Mandravellos at {\uldb mandrav@supergoal.gr}{\v !ExecFile('mailto:mandrav@supergoal.gr')}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Bloodshed Software homepage : {\uldb http://www.bloodshed.net}{\v !ExecFile('http://www.bloodshed.net}
\rquote )}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Mingw homepage : {\uldb http://www.mingw.org/}{\v !ExecFile('http://www.mingw.org/')}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic37}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Step1}}}}
}}{\loch\f1\fs16\lang1033{\fs28 Step 1 }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This tutorial covers step-by-step the creation of a C++ Windows project, as well as managing its options.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 To create a new project, click on the File menu, then on "New project".}
\par {\loch\f1\fs16\lang1033\i0\b0 In the project type dialog, select "Windows application" and make sure the C++ button is checked. Click on OK to continue.}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\uldb Step 2}}{\loch\f1\fs16\lang1033Topic38}
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic38}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Step2}}}}
}}{\loch\f1\fs16\lang1033{\f8 Step 2 }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Type a name for your project in the next dialog, like "Project 1" and click on OK.}
\par {\loch\f1\fs16\lang1033\i0\b0 You will have then to save your project in a directory. You can save it for example in c:\\My Documents\\ and then click on Save. All the necessary files will be created in the directory you selected and your project will be opened in Dev-C++, with a new sou
rce file inside (the code inside it is the base for a win32 program).}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\uldb Step 3}}{\loch\f1\fs16\lang1033Topic39}
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic39}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Step3}}}}
}}{\loch\f1\fs16\lang1033{\f8 Step 3 }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Now we are going to compile the project, and create a Windows executable.}
\par {\loch\f1\fs16\lang1033\i0\b0 Click on the Execute menu, and click on "Compile". A dialog will ask you where do you want to save your file. Select a directory as well as a filename for your file and click on Save. A windows titled "Please wait while compiling..." will appear. Dev-C++ i
s currently compiling the file. If you don't get any compile errors, you can click on the Execute button to launch the executable of your program.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 If any error occurs, it will be displayed in the Compiler output panel (at the bottom of Dev-C++). You can then double-click on it to go to the error in your source.}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\uldb Step 4}}{\loch\f1\fs16\lang1033Topic40}
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic40}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Step4}}}}
}}{\loch\f1\fs16\lang1033{\f8 Step 4 }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 You can now do the following things with your project:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 -Create a new file : click on Project menu, then "New unit in project"}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 -Add a file to your project : click on Project menu, then "Add unit to project"}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 -Remove a file from your project : right-click on the file you would like to remove in the Project Manager, and click on "Remove from project" (this can also be accessed by the Project menu)}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 -Rename a file in your project : right-click on the file you would like to rename in the Project Manager, and click "Rename file"}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 -Set Project Options : follow {\uldb Step 5}{\v Topic41}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 -Modify the resource file of your program : follow {\uldb Step 6}{\v Topic42}
}
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic41}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Step5}}}}
}}{\loch\f1\fs16\lang1033{\f8 Step 5 }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Managing project options:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 To open the Project Options dialog, click on the Project menu, then on "Project options".}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Options are described here:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 -Project icon : you can modify the default icon for your application, either by loading an existing   \tab icon from your hard disk (click on "Load Icon...", or either by selecting an icon in the Icon Library  (click on "Icon Library").}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 -Object files : Add object files to be linked with your project, as well as libraries and compiler options.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 -Extra compiler options : You can add here compiler parameters that will be used when compiling. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 -Extra include directories : You can specify here your project's include directories.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 -Resource files : Add further resource file to your project}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 -Do not create a console : Check this if you are willing to make a Windows program}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 -Compile for C++ : Compile C++ files or not}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 -Create a DLL : Check this is you want to create a DLL instead of an EXE file.}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b0{\uldb Step 6}}{\loch\f1\fs16\lang1033Topic42}
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic42}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Step6}}}}
}}{\loch\f1\fs16\lang1033{\f8 Step 6 }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Modifying the resource file:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 To open the Resource Editor, click on the Project menu, then on "Edit resource file".}
\par {\loch\f1\fs16\lang1033\i0\b0 Then, you will be able to modify your resource file. The Resource Editor can also easily add menus, bitmaps, fonts and icons to your resource file, by clicking on the appropriate buttons in the  dialog. When creating menus, you should take a look at the Wi
nMenu example included with Dev-C++ to know how to set the menu in your program.}
\par 
\par 
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f7\fs20\lang1033\i0\b0{\fs20\f7{\*\updnprop5800}\up6 #$}}{\loch\f1\fs16\lang1033Using integrated debugger}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 todo}
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic56}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Running C Programs}}}}
}}{\loch\f1\fs16\lang1033{\fs28 Introduction to C Programming }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 So you want to learn C? We hope to provide you with an easy step by step guide to programming in C. The course is split up into several sections, or lessons,}
\par {\loch\f1\fs16\lang1033\i0\b0 which include C example programs for you to demonstrate what has been taught. Although the ordering of the sections does not have to be strictly followed, the}
\par {\loch\f1\fs16\lang1033\i0\b0 sections become progressively more involved and assume background knowledge attained from previous sections. Good Luck! }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Before you start:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    1.Please read this Introduction. }
\par {\loch\f1\fs16\lang1033\i0\b0    2.It is a long course and will take you quite a while to complete. If you use the Hotlist or Bookmark feature of your browser you will be able to return to the place}
\par {\loch\f1\fs16\lang1033\i0\b0      where you left off at or to return to a particular section. }
\par {\loch\f1\fs16\lang1033\i0\b0    3.This tutorial should be viewable on any WWW browser - if you have any problems please let us know!. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The Course Section Topics:}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0    1.Overview of C.{\v Topic58}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0         a.Why use C? }
\par {\loch\f1\fs16\lang1033\i0\b0         b.Uses of C }
\par {\loch\f1\fs16\lang1033\i0\b0         c.A Brief History of C }
\par {\loch\f1\fs16\lang1033\i0\b0         d.C for Personal Computers }
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0    2.Running C Programs.{\v Topic59}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0         a.Using Microsoft C. }
\par {\loch\f1\fs16\lang1033\i0\b0         b.Unix System. }
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0    3.Structure of C Programs.{\v Topic60}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0         a.C's Character Set }
\par {\loch\f1\fs16\lang1033\i0\b0         b.The form of a C Program }
\par {\loch\f1\fs16\lang1033\i0\b0         c.The layout of C Programs }
\par {\loch\f1\fs16\lang1033\i0\b0         d.Preprocessor Directives }
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0    4.Your First Program.{\v Topic61}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0         a.Commenting Programs. }
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0    5.Data Types - Part I.{\v Topic62}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0         a.Integer Number Variables. }
\par {\loch\f1\fs16\lang1033\i0\b0         b.Decimal Number Variables. }
\par {\loch\f1\fs16\lang1033\i0\b0         c.Character Variables. }
\par {\loch\f1\fs16\lang1033\i0\b0         d.Assignment Statement. }
\par {\loch\f1\fs16\lang1033\i0\b0         e.Arithmetic Ordering. }
\par {\loch\f1\fs16\lang1033\i0\b0         f.Something To Declare. }
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0    6.Input and Output{\v Topic63}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0         a.printf. }
\par {\loch\f1\fs16\lang1033\i0\b0         b.The % Format Specifiers. }
\par {\loch\f1\fs16\lang1033\i0\b0         c.Formatting Your Output. }
\par {\loch\f1\fs16\lang1033\i0\b0         d.scanf. }
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0    7.Control Loops{\v Topic64}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0         a.The while and do while Loops. }
\par {\loch\f1\fs16\lang1033\i0\b0         b.Conditions, or Logical Expression. }
\par {\loch\f1\fs16\lang1033\i0\b0         c.The for Loop. }
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0    8.Conditional Execution{\v Topic65}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0         a.Program Control - if , if else etc.. }
\par {\loch\f1\fs16\lang1033\i0\b0         b.Using break and continue Within Loops. }
\par {\loch\f1\fs16\lang1033\i0\b0         c.Select Paths with switch. }
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0    9.Structure and Nesting{\v Topic66}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0   10.Functions and Prototypes{\v Topic67}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0         a.Functions - C's Building Blocks. }
\par {\loch\f1\fs16\lang1033\i0\b0         b.Functions and Local Variables. }
\par {\loch\f1\fs16\lang1033\i0\b0         c.Getting the Value of Variables into Functions. }
\par {\loch\f1\fs16\lang1033\i0\b0         d.Functions and Prototypes. }
\par {\loch\f1\fs16\lang1033\i0\b0         e.What is ANSI C?. }
\par {\loch\f1\fs16\lang1033\i0\b0         f.Standard Library Functions. }
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0   11.Data Types - Part II{\v Topic68}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0         a.Global Variables. }
\par {\loch\f1\fs16\lang1033\i0\b0         b.Constant Data Types. }
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0   {\uldb 12.Arrays}{\v Topic69}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0   13.Pointers{\v Topic70}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0         a.Point To Point. }
\par {\loch\f1\fs16\lang1033\i0\b0         b.Swap Shop. }
\par {\loch\f1\fs16\lang1033\i0\b0         c.Pointers Linked To Arrays. }
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0   {\uldb 14.Strings}{\v Topic71}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0         a.Stringing Along. }
\par {\loch\f1\fs16\lang1033\i0\b0         b.As easy as... B or C?. }
\par {\loch\f1\fs16\lang1033\i0\b0         c.A Sort OF Bubble Program. }
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0   15.Structures{\v Topic72}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0         a.Defining A New Type. }
\par {\loch\f1\fs16\lang1033\i0\b0         b.Structures and Functions. }
\par {\loch\f1\fs16\lang1033\i0\b0         c.Pointers To Structures. }
\par {\loch\f1\fs16\lang1033\i0\b0         d.Malloc. }
\par {\loch\f1\fs16\lang1033\i0\b0         e.Structures and Linked Lists. }
\par {\loch\f1\fs16\lang1033\i0\b0         f.Structures and C++. }
\par {\loch\f1\fs16\lang1033\i0\b0         g.Header Files. }
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0   16.File Handling{\v Topic73}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0         a.Stream Files. }
\par {\loch\f1\fs16\lang1033\i0\b0         b.Text File Functions. }
\par {\loch\f1\fs16\lang1033\i0\b0         c.Binary File Functions. }
\par {\loch\f1\fs16\lang1033\i0\b0         d.File System Functions. }
\par {\loch\f1\fs16\lang1033\i0\b0         e.Command Line Parameters. }
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0   17.Recommended Books{\v Topic74}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0   18.Appendix: C's functions{\v Topic57}
}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 You've now reached the end of this online tutorial. We have covered a lot of ground - but this has been a first course in C and there is still plenty to learn. However, as long as you keep in}
\par {\loch\f1\fs16\lang1033\i0\b0 mind that C is an essentially simple language and how new features are built from this simplicity you shouldn't have many problems.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 You also need to be aware of the fact that C is a very low-level language and as a result allows programmers to confuse data types and muck around with the bit}
\par {\loch\f1\fs16\lang1033\i0\b0 patterns of the data in a way that higher level languages would disown! You probably need to make sure that you understand binary and the way that values are}
\par {\loch\f1\fs16\lang1033\i0\b0 represented to get the best from C.}
\par 
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic58}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Overview of C}}}}
}}{\loch\f1\fs16\lang1033{\fs28\f8 Overview of C }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Objectives:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This section is designed to give you a general overview of the C programming language. Although much of this section will be expanded in later sections it gives you}
\par {\loch\f1\fs16\lang1033\i0\b0 a taste of what is to come.}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Why use C?:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 C has been used successfully for every type of programming problem imaginable from operating systems to spreadsheets to expert systems - and efficient compilers are available for}
\par {\loch\f1\fs16\lang1033\i0\b0 machines ranging in power from the Apple Macintosh to the Cray supercomputers. The largest measure of C's success seems to be based on purely practical considerations:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0      the portability of the compiler; }
\par {\loch\f1\fs16\lang1033\i0\b0      the standard library concept; }
\par {\loch\f1\fs16\lang1033\i0\b0      a powerful and varied repertoire of operators; }
\par {\loch\f1\fs16\lang1033\i0\b0      an elegant syntax; }
\par {\loch\f1\fs16\lang1033\i0\b0      ready access to the hardware when needed; }
\par {\loch\f1\fs16\lang1033\i0\b0      and the ease with which applications can be optimized by hand-coding isolated procedures }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 C is often called a "Middle Level" programming language. This is not a reflection on its lack of programming power but more a reflection on its capability to access}
\par {\loch\f1\fs16\lang1033\i0\b0 the system's low level functions. Most high-level languages (e.g. Fortran) provides everything the programmer might want to do already built into the language. A low}
\par {\loch\f1\fs16\lang1033\i0\b0 level language (e.g. assembler) provides nothing other than access to the machines basic instruction set. A middle level language, such as C, probably doesn't supply}
\par {\loch\f1\fs16\lang1033\i0\b0 all the constructs found in high-languages - but it provides you with all the building blocks that you will need to produce the results you want! }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Uses of C}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 C was initially used for system development work, in particular the programs that make-up the operating system. Why use C? Mainly because it produces code that runs nearly as fast as}
\par {\loch\f1\fs16\lang1033\i0\b0 code written in assembly language. Some examples of the use of C might be:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0      Operating Systems }
\par {\loch\f1\fs16\lang1033\i0\b0      Language Compilers }
\par {\loch\f1\fs16\lang1033\i0\b0      Assemblers }
\par {\loch\f1\fs16\lang1033\i0\b0      Text Editors }
\par {\loch\f1\fs16\lang1033\i0\b0      Print Spoolers }
\par {\loch\f1\fs16\lang1033\i0\b0      Network Drivers }
\par {\loch\f1\fs16\lang1033\i0\b0      Modern Programs }
\par {\loch\f1\fs16\lang1033\i0\b0      Data Bases }
\par {\loch\f1\fs16\lang1033\i0\b0      Language Interpreters }
\par {\loch\f1\fs16\lang1033\i0\b0      Utilities }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 In recent years C has been used as a general-purpose language because of its popularity with programmers. It is not the world's easiest language to learn and you}
\par {\loch\f1\fs16\lang1033\i0\b0 will certainly benifit if you are not learning C as your first programming language! C is trendy (I nearly said sexy) - many well established programmers are switching to}
\par {\loch\f1\fs16\lang1033\i0\b0 C for all sorts of reasons, but mainly because of the portability that writing standard C programs can offer. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 A Brief History of C:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 C is a general-purpose language which has been closely associated with the UNIX operating system for which it was developed - since the system and most of the programs that run it are}
\par {\loch\f1\fs16\lang1033\i0\b0 written in C. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Many of the important ideas of C stem from the language BCPL, developed by Martin Richards. The influence of BCPL on C proceeded indirectly through the}
\par {\loch\f1\fs16\lang1033\i0\b0 language B, which was written by Ken Thompson in 1970 at Bell Labs, for the first UNIX system on a DEC PDP-7. BCPL and B are "typeless" languages whereas C}
\par {\loch\f1\fs16\lang1033\i0\b0 provides a variety of data types. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 In 1972 Dennis Ritchie at Bell Labs writes C and in 1978 the publication of The C Programming Language by Kernighan & Ritchie caused a revolution in the}
\par {\loch\f1\fs16\lang1033\i0\b0 computing world. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 In 1983, the American National Standards Institute (ANSI) established a committee to provide a modern, comprehensive definition of C. The resulting definition, the}
\par {\loch\f1\fs16\lang1033\i0\b0 ANSI standard, or "ANSI C", was completed late 1988. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 A Rough Guide to Programming Languages is available on-line for those of you that are interested. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 C for Personal Computers:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 With regards to personal computers Microsoft C for IBM (or clones) PC's. and Borlands C are seen to be the two most commonly used systems. However, the latest version of Microsoft}
\par {\loch\f1\fs16\lang1033\i0\b0 C is now considered to be the most powerful and efficient C compiler for personal computers.}
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic59}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Running C Programs}}}}
}}{\loch\f1\fs16\lang1033{\fs28 Running C Programs }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Objectives:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Having read this section you should be able to:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    1.Edit, link and run your C programs }
\par 
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This section is primarily aimed at the beginner who as no or little experience of using compiled languages. We cover the various stages of program development. The basic principles of this}
\par {\loch\f1\fs16\lang1033\i0\b0 section will apply to what ever C compiler you choose to use, the stages are nearly always the same}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The Edit-Compile-Link-Execute Process:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Developing a program in a compiled language such as C requires at least four steps: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    1.editing (or writing) the program }
\par {\loch\f1\fs16\lang1033\i0\b0    2.compiling it }
\par {\loch\f1\fs16\lang1033\i0\b0    3.linking it }
\par {\loch\f1\fs16\lang1033\i0\b0    4.executing it }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 We will now cover each step separately.}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Editing:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 You write a computer program with words and symbols that are understandable to human beings. This is the edit part of the development cycle. You type the program directly into a}
\par {\loch\f1\fs16\lang1033\i0\b0 window on the screen and save the resulting text as a separate file. This is often referred to as the source file (you can read it with the TYPE command in DOS or the cat command in unix).}
\par {\loch\f1\fs16\lang1033\i0\b0 The custom is that the text of a C program is stored in a f ile with the extension .c for C programming language}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Compiling:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 You cannot directly execute the source file. To run on any computer system, the source file must be translated into binary numbers understandable to the computer's Central Procesing Unit}
\par {\loch\f1\fs16\lang1033\i0\b0 (for example, the 80*87 microprocessor). This process produces an intermediate object file - with the extension .obj, the .obj stands for Object.}
\par 
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Linking:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The first question that comes to most peoples minds is Why is linking necessary? The main reason is that many compiled languages come with library rountines which can be added to your}
\par {\loch\f1\fs16\lang1033\i0\b0 program. Theses routines are written by the manufacturer of the compiler to perform a variety of tasks, from input/output to complicated mathematical functions. In the case of C the standard}
\par {\loch\f1\fs16\lang1033\i0\b0 input and output functions are contained in a library (stdio.h) so even the most basic program will require a lib rary function. After linking the file extension is .exe which are executable}
\par {\loch\f1\fs16\lang1033\i0\b0 files.}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Executable files:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Thus the text editor produces .c source files, which go to the compiler, which produces .obj object files, which go to the linker, which produces .exe executable file. You can then run}
\par {\loch\f1\fs16\lang1033\i0\b0 .exe files as you can other applications, simply by typing their names at the DOS prompt or run using windows menu. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Using Microsoft C:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Edit stage: }
\par {\loch\f1\fs16\lang1033\i0\b0      Type program in using one of the Microsoft Windows editing packages.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Compile and link: }
\par {\loch\f1\fs16\lang1033\i0\b0      Select Building from Make menu. Building option allows you to both compile and link in the same option.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Execute: }
\par {\loch\f1\fs16\lang1033\i0\b0      Use the Run menu and select Go option.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Errors: }
\par {\loch\f1\fs16\lang1033\i0\b0      First error highlighted. Use Next Error from Search menu for further errors if applicable. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 If you get an error message, or you find that the program doesn't work when you finally run it (at least not in the way you anticipated) you will have to go back to the source file - the .c file -}
\par {\loch\f1\fs16\lang1033\i0\b0 to make changes and go through the whole development process again! }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Unix systems:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The University's central irix Service is a Silicon Graphics Inc. Challenge XL system which runs a Unix-like operating sysem called IRIX. The basic information to run a C program on this}
\par {\loch\f1\fs16\lang1033\i0\b0 system is covered in document HT.SI.05 - How To... Run C Programs On The irix Service. Although this document refers to the IRIX operating system many of the command options will}
\par {\loch\f1\fs16\lang1033\i0\b0 be common to all Unix systems. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 On all Unix systems further help on the C compiler can be obtained from the on-line manual. Type }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 man cc }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 on your local Unix system for more information. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Please note that Unix is a case sensitive operating system and files named firstprog.c and FIRSTPROG.c are treated as two separate files on these system. By default the Unix system}
\par {\loch\f1\fs16\lang1033\i0\b0 compiles and links a program in one step, as follows:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 cc firstprog.c }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This command creates an executable file called a.out that overwrites any existing file called a.out. Executable files on Unix are run by typing their name. In this case the program is run as}
\par {\loch\f1\fs16\lang1033\i0\b0 follows:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 a.out}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 To change the name of the executable file type:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 cc -o firstprog.c}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This produces an executable file called firstprog which is run as follows:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 firstprog}
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic60}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Structure of C Programs}}}}
}}{\loch\f1\fs16\lang1033{\fs28 Structure of C Programs }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Objectives:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Having completed this section you should know about: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    1.C's character set }
\par {\loch\f1\fs16\lang1033\i0\b0    2.C's keywords }
\par {\loch\f1\fs16\lang1033\i0\b0    3.the general structure of a C program }
\par {\loch\f1\fs16\lang1033\i0\b0    4.that all C statement must end in a ; }
\par {\loch\f1\fs16\lang1033\i0\b0    5.that C is a free format language }
\par {\loch\f1\fs16\lang1033\i0\b0    6.all C programs us header files that contain standard library functions. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 C's Character Set:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 C does not use, nor requires the use of, every character found on a modern computer keyboard. The only characters required by the C Programming Language are as follows:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0      A - Z }
\par {\loch\f1\fs16\lang1033\i0\b0      a -z }
\par {\loch\f1\fs16\lang1033\i0\b0      0 - 9 }
\par {\loch\f1\fs16\lang1033\i0\b0      space . , : ; ' $ " }
\par {\loch\f1\fs16\lang1033\i0\b0      # % & ! _ \{\} [] () < > | }
\par {\loch\f1\fs16\lang1033\i0\b0      + - / * = }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The use of most of this set of characters will be dicussed throughout the course. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The form of a C Program:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 All C programs will consist of at least one function, but it is usual (when your experience grows) to write a C program that comprises several functions. The only function that has to be}
\par {\loch\f1\fs16\lang1033\i0\b0 present is the function called main. For more advanced programs the main function will act as a controling function calling other functions in their turn to do the dirty work! The main}
\par {\loch\f1\fs16\lang1033\i0\b0 function is the first function that is called when your program executes. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 C makes use of only 32 keywords which combine with the formal syntax to the form the C programming language. Note that all keywords are written in lower case - C, like UNIX, uses}
\par {\loch\f1\fs16\lang1033\i0\b0 upper and lowercase text to mean different things. If you are not sure what to use then always use lowercase text in writing your C programs. A keyword may not be used for any other}
\par {\loch\f1\fs16\lang1033\i0\b0 purposes. For example, you cannot have a variable called auto. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The layout of C Programs:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The general form of a C program is as follows (don't worry about what everything means at the moment - things will be explained later): }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 preprocessor directives}
\par {\loch\f1\fs16\lang1033\i0\b0 global declarations}
\par {\loch\f1\fs16\lang1033\i0\b0 main()}
\par {\loch\f1\fs16\lang1033\i0\b0 \{}
\par {\loch\f1\fs16\lang1033\i0\b0    local variables to function main ;}
\par {\loch\f1\fs16\lang1033\i0\b0    statements associated with function main ;}
\par {\loch\f1\fs16\lang1033\i0\b0 \}}
\par {\loch\f1\fs16\lang1033\i0\b0 f1()}
\par {\loch\f1\fs16\lang1033\i0\b0 \{}
\par {\loch\f1\fs16\lang1033\i0\b0    local variables to function 1 ;}
\par {\loch\f1\fs16\lang1033\i0\b0    statements associated with function 1 ;}
\par {\loch\f1\fs16\lang1033\i0\b0 \}}
\par {\loch\f1\fs16\lang1033\i0\b0 f2()}
\par {\loch\f1\fs16\lang1033\i0\b0 \{}
\par {\loch\f1\fs16\lang1033\i0\b0    local variables to function f2 ;}
\par {\loch\f1\fs16\lang1033\i0\b0    statements associated with function 2 ;}
\par {\loch\f1\fs16\lang1033\i0\b0 \}}
\par {\loch\f1\fs16\lang1033\i0\b0 .}
\par {\loch\f1\fs16\lang1033\i0\b0 .}
\par {\loch\f1\fs16\lang1033\i0\b0 .}
\par {\loch\f1\fs16\lang1033\i0\b0 etc}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Note the use of the bracket set () and \{\}. () are used in conjunction with function names whereas \{\} are used as to delimit the C statements that are associated with that function. Also note}
\par {\loch\f1\fs16\lang1033\i0\b0 the semicolon - yes it is there, but you might have missed it! a semicolon (;) is used to terminate C statements. C is a free format language and long statements can be continued, without}
\par {\loch\f1\fs16\lang1033\i0\b0 truncation, onto the next line. The semicolon informs the C compiler that the end of the statement has been reached. Free format also means that you can add as many spaces as you like to}
\par {\loch\f1\fs16\lang1033\i0\b0 improve the look of your programs. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 A very common mistake made by everyone, who is new to the C programming language, is to miss off the semicolon. The C compiler will concatinate the various lines of the program}
\par {\loch\f1\fs16\lang1033\i0\b0 together and then tries to understand them - which it will not be able to do. The error message produced by the compiler will relate to a line of you program which could be some distance}
\par {\loch\f1\fs16\lang1033\i0\b0 from the initial mistake. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Preprocessor Directives:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 C is a small language but provides the programmer with all the tools to be able to write powerful programs. Some people don't like C because it is too primitive! Look again at the set of}
\par {\loch\f1\fs16\lang1033\i0\b0 keywords that comprises the C language and see if you can find a command that allows you to print to the computer's screen the result of, say, a simple calculation. Don't look too hard}
\par {\loch\f1\fs16\lang1033\i0\b0 because it dosen't exist. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 It would be very tedious, for all of us, if everytime we wanted to communicate with the computer we all had to write our own output functions. Fortunately, we do not have to. C uses}
\par {\loch\f1\fs16\lang1033\i0\b0 libraries of standard functions which are included when we build our programs. For the novice C programmer one of the many questions always asked is does a function already exist for}
\par {\loch\f1\fs16\lang1033\i0\b0 what I want to do? Only experience will help here but we do include a function listing as part of this course. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 All programs you will write will need to communicate to the outside world - I don't think I can think of a program that doesn't need to tell someone an answer. So all our C programs will}
\par {\loch\f1\fs16\lang1033\i0\b0 need at least one of C's standard libraries which deals with standard inputting and outputting of data. This library is called stdin.h and it is declared in our programs before the main}
\par {\loch\f1\fs16\lang1033\i0\b0 function. The .h extension indicates that this is a header file. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 I have already mentioned that C is a free format language and that you can layout your programs how you want to using as much white space as you like. The only exception are statements}
\par {\loch\f1\fs16\lang1033\i0\b0 associated with the preprocessor. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 All preprocessor directives begin with a # and the must start in the first column. The commonest directive to all C programs is: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #include <stdio.h> }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Note the use of the angle brackets (< and >) around the header's name. These indicate that the header file is to be looked for on the system disk which stores the rest of the C program}
\par {\loch\f1\fs16\lang1033\i0\b0 application. Some text books will show the above statement as follows: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #include "stdio.h" }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The double quotes indicate that the current working directory should be searched for the required header file. This will be true when you write your own header files but the standard header}
\par {\loch\f1\fs16\lang1033\i0\b0 files should always have the angle brackets around them. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 NOTE: just to keep you on your toes - preprocessor statements, such as include, DO NOT use semi-colons as delimiters! But don't forget the # must be in the first column. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Thats enough background to C programs - lets get on with our first program which will start to bring together some of the ideas outlined above.}
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic61}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Your First Program}}}}
}}{\loch\f1\fs16\lang1033{\fs28 Your First Program}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Objectives:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Having read this section you should have an understanding of: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    1.a preprocessor directive that must be present in all your C programs. }
\par {\loch\f1\fs16\lang1033\i0\b0    2.a simple C function used to write information to your screen. }
\par {\loch\f1\fs16\lang1033\i0\b0    3.how to add comments to your programs }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Now that you've seen the compiler in action it's time for you to write your very own first C program. You can probably guess what it's going to be - the program that everyone writes just to}
\par {\loch\f1\fs16\lang1033\i0\b0 check they understand the very, very, very basics of what is going on in a new language.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Yes - it's the ubiquitous "Hello World" program. All your first program is going to do is print the message "Hello World" on the screen. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The program is a short one, to say the least. Here it is:}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #include <stdin.h>}
\par {\loch\f1\fs16\lang1033\i0\b0 main()}
\par {\loch\f1\fs16\lang1033\i0\b0 \{}
\par {\loch\f1\fs16\lang1033\i0\b0     printf("Hello World\\n");}
\par {\loch\f1\fs16\lang1033\i0\b0 \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The first line is the standard start for all C programs - main(). After this comes the program's only instruction enclosed in curly brackets \{\}. The curly brackets mark the start and end of the}
\par {\loch\f1\fs16\lang1033\i0\b0 list of instructions that make up the program - in this case just one instruction.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Notice the semicolon marking the end of the instruction. You might as well get into the habit of ending every C instruction with a semicolon - it will save you a lot of trouble! Also notice that}
\par {\loch\f1\fs16\lang1033\i0\b0 the semicolon marks the end of an instruction - it isn't a separator as is the custom in other languages.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 If you're puzzled about why the curly brackets are on separate lines I'd better tell you that it's just a layout convention to help you spot matching brackets. C is very unfussy about the way}
\par {\loch\f1\fs16\lang1033\i0\b0 you lay it out. For example, you could enter the Hello World program as:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 main()\{printf("Hello World\\n");\}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 but this is unusual. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The printf function does what its name suggest it does: it prints, on the screen, whatever you tell it to. The "\\n" is a special symbols that forces a new line on the screen.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 OK, that's enough explanation of our first program! Type it in and save it as Hello.c.Then use the compiler to compile it, then the linker to link it and finally run it. The output is as follows:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Hello World }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Add Comments to a Program:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 A comment is a note to yourself (or others) that you put into your souce code. All comments are ignored by the compiler. They exist solely for your benefit. Comments are used primarily to}
\par {\loch\f1\fs16\lang1033\i0\b0 document the meaning and purpose of your source code, so that you can remember later how it functions and how to use it. You can also use a comment to temporarily remove a line of}
\par {\loch\f1\fs16\lang1033\i0\b0 code. Simply surround the line(s) with the comment symbols.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 In C, the start of a comment is signaled by the /* character pair. A comment is ended by */. For example, this is a syntactically correct C comment:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 /* This is a comment. */}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Comments can extend over several lines and can go anywhere except in the middle of any C keyword, function name or variable name. In C you can't have one comment within another}
\par {\loch\f1\fs16\lang1033\i0\b0 comment. That is comments may not be nested. Lets now look at our first program one last time but this time with comments:}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 main() /* main function heading */}
\par {\loch\f1\fs16\lang1033\i0\b0 \{}
\par {\loch\f1\fs16\lang1033\i0\b0     printf("\\n Hello, World! \\n");  /* Display message on */}
\par {\loch\f1\fs16\lang1033\i0\b0 \}                                   /* the screen */ }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This program is not large enough to warrant comment statements but the principle is still the same.}
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic62}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Data Types - Part I}}}}
}}{\loch\f1\fs16\lang1033{\fs28 Data Types }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Objectives:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Having read this section you should be able to: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    1.declare (name) a local variable as being one of C's five data types }
\par {\loch\f1\fs16\lang1033\i0\b0    2.initialise local variables }
\par {\loch\f1\fs16\lang1033\i0\b0    3.perform simple arithemtic using local variables }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Now we have to start looking into the details of the C language. How easy you find the rest of this section will depend on whether you have ever programmed before - no matter what the}
\par {\loch\f1\fs16\lang1033\i0\b0 language was. There are a great many ideas common to programming in any language and C is no exception to this rule. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 So if you haven't programmed before, you need to take the rest of this section slowly and keep going over it until it makes sense. If, on the other hand, you have programmed before you'll be}
\par {\loch\f1\fs16\lang1033\i0\b0 wondering what all the fuss is about It's a lot like being able to ride a bike! }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The first thing you need to know is that you can create variables to store values in. A variable is just a named area of storage that can hold a single value (numeric or character). C is very}
\par {\loch\f1\fs16\lang1033\i0\b0 fussy about how you create variables and what you store in them. It demands that you declare the name of each variable that you are going to use and its type, or class, before you actually}
\par {\loch\f1\fs16\lang1033\i0\b0 try to do anything with it. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 In this section we are only going to be discussing local variables. These are variables that are used within the current program unit (or function) in a later section we will looking at global}
\par {\loch\f1\fs16\lang1033\i0\b0 variables - variables that are available to all the program's functions. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 There are five basic data types associated with variables:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0      int - integer: a whole number. }
\par {\loch\f1\fs16\lang1033\i0\b0      float - floating point value: ie a number with a fractional part. }
\par {\loch\f1\fs16\lang1033\i0\b0      double - a double-precision floating point value. }
\par {\loch\f1\fs16\lang1033\i0\b0      char - a single character. }
\par {\loch\f1\fs16\lang1033\i0\b0      void - valueless special purpose type which we will examine closely in later sections. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 One of the confusing things about the C language is that the range of values and the amount of storage that each of these types takes is not defined. This is because in each case the 'natural'}
\par {\loch\f1\fs16\lang1033\i0\b0 choice is made for each type of machine.You can call variables what you like, although it helps if you give them sensible names that give you a hint of what they're being used for - names}
\par {\loch\f1\fs16\lang1033\i0\b0 like sum, total, average and so on. If you are translating a formular then use variable names that reflect the elements used in the formula. For example, 2&188;r (that should read as "2 pi}
\par {\loch\f1\fs16\lang1033\i0\b0 r" but that depends upon how your browser has been set-up) would give local variables names of pi and r. Remember, C programmers tend to prefer short names! }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Note: all C's variables must begin with a letter or a "_" (underscore) character. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Integer Number Variables:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The first type of variable we need to know about is of class type int - short for integer. An int variable can store a value in the range -32768 to +32767. You can think of it as a largish}
\par {\loch\f1\fs16\lang1033\i0\b0 positive or negative whole number: no fractional part is allowed. To declare an int you use the instruction:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int variable name;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 For example:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int a;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 declares that you want to create an int variable called a. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 To assign a value to our integer variable we would use the following C statement: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 a=10; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The C programming language uses the "=" character for assignment. A statement of the form a=10; should be interpreted as take the numerical value 10 and store it in a memory}
\par {\loch\f1\fs16\lang1033\i0\b0 location associated with the integer variable a. The "=" character should not be seen as an equality otherwise writing statements of the form: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 a=a+10; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 will get mathematicians blowing fuses! This statement should be interpreted as take the current value stored in a memory location associated with the integer variable a; add the}
\par {\loch\f1\fs16\lang1033\i0\b0 numerical value 10 to it and then replace this value in the memory location associated with a. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Decimal Number Variables:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 As described above, an integer variable has no fractional part. Integer variables tend to be used for counting, whereas real numbers are used in arithmetic. C uses one of two keywords to}
\par {\loch\f1\fs16\lang1033\i0\b0 declare a variable that is to be associated with a decimal number: float and double. They are each offer a different level of precision as outlined below. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 float }
\par {\loch\f1\fs16\lang1033\i0\b0      A float, or floating point, number has about seven digits of precision and a range of about 1.E-36 to 1.E+36. A float takes four bytes to store.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 double }
\par {\loch\f1\fs16\lang1033\i0\b0      A double, or double precision, number has about 13 digits of precision and a range of about 1.E-303 to 1.E+303. A double takes eight bytes to store. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 For example: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 float total; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 double sum; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 To assign a numerical value to our floating point and double precision variables we would use the following C statement: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 total=0.0; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 sum=12.50; }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Character Variables:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 C only has a concept of numbers and characters. It very often comes as a surprise to some programmers who learnt a beginner's language such as BASIC that C has no understanding of}
\par {\loch\f1\fs16\lang1033\i0\b0 strings but a string is only an array of characters and C does have a concept of arrays which we shall be meeting later in this course. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 To declare a variable of type character we use the keyword char. - A single character stored in one byte. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 For example: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 char c; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 To assign, or store, a character value in a char data type is easy - a character variable is just a symbol enclosed by single quotes. For example, if c is a char variable you can store the letter}
\par {\loch\f1\fs16\lang1033\i0\b0 A in it using the following C statement: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 c='A' }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Notice that you can only store a single character in a char variable. Later we will be discussing using character strings, which has a very real potential for confusion because a string constant}
\par {\loch\f1\fs16\lang1033\i0\b0 is written between double quotes. But for the moment remember that a char variable is 'A' and not "A". }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Assignment Statement:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Once you've declared a variable you can use it, but not until it has been declared - attempts to use a variable that has not been defined will cause a compiler error. Using a variable means}
\par {\loch\f1\fs16\lang1033\i0\b0 storing something in it. You can store a value in a variable using:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 name = value;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 For example:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 a=10;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 stores the value 10 in the int variable a. What could be simpler? Not much, but it isn't actually very useful! Who wants to store a known value like 10 in a variable so you can use it later? It}
\par {\loch\f1\fs16\lang1033\i0\b0 is 10, always was 10 and always will be 10. What makes variables useful is that you can use them to store the result of some arithmetic. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Consider four very simple mathematical operations: add, subtract, multiply and divide. Let us see how C would use these operations on two float variables a and b. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 add }
\par {\loch\f1\fs16\lang1033\i0\b0      a+b }
\par {\loch\f1\fs16\lang1033\i0\b0 subtract }
\par {\loch\f1\fs16\lang1033\i0\b0      a-b }
\par {\loch\f1\fs16\lang1033\i0\b0 multiply }
\par {\loch\f1\fs16\lang1033\i0\b0      a*b }
\par {\loch\f1\fs16\lang1033\i0\b0 divide }
\par {\loch\f1\fs16\lang1033\i0\b0      a/b }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Note that we have used the following characters from C's character set: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 +     for add}
\par {\loch\f1\fs16\lang1033\i0\b0 -     for subtract}
\par {\loch\f1\fs16\lang1033\i0\b0 *     for multiply}
\par {\loch\f1\fs16\lang1033\i0\b0 /     for divide}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 BE CAREFUL WITH ARITHMETIC!!! What is the answer to this simple calculation? }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 a=10/3 }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The answer depends upon how a was declared. If it was declared as type int the answer will be 3; if a is of type float then the answer will be 3.333. It is left as an exercise to the reader}
\par {\loch\f1\fs16\lang1033\i0\b0 to find out the answer for a of type char. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Two points to note from the above calculation: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    1.C ignores fractions when doing integer division! }
\par {\loch\f1\fs16\lang1033\i0\b0    2.when doing float calculations integers will be converted into float. We will see later how C handles type conversions. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Arithmetic Ordering:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Whilst we are dealing with arithmetic we want to remind you about something that everyone learns at junior school but then we forget it. Consider the following calculation: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 a=10.0 + 2.0 * 5.0 - 6.0 / 2.0 }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 What is the answer? If you think its 27 go to the bottom of the class! Perhaps you got that answer by following each instruction as if it was being typed into a calculator. A computer doesn't}
\par {\loch\f1\fs16\lang1033\i0\b0 work like that and it has its own set of rules when performing an arithmetic calculation. All mathematical operations form a hierachy which is shown here. In the above calculation the}
\par {\loch\f1\fs16\lang1033\i0\b0 multiplication and division parts will be evaluated first and then the addition and subtraction parts. This gives an answer of 17. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Note: To avoid confusion use brackets. The following are two different calculations: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 a=10.0 + (2.0 * 5.0) - (6.0 / 2.0) }
\par {\loch\f1\fs16\lang1033\i0\b0 a=(10.0 + 2.0) * (5.0 - 6.0) / 2.0 }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 You can freely mix int, float and double variables in expressions. In nearly all cases the lower precision values are converted to the highest precision values used in the expression. For}
\par {\loch\f1\fs16\lang1033\i0\b0 example, the expression f*i, where f is a float and i is an int, is evaluated by converting the int to a float and then multiplying. The final result is, of course, a float but this may be}
\par {\loch\f1\fs16\lang1033\i0\b0 assigned to another data type and the conversion will be made automatically. If you assign to a lower precision type then the value is truncated and not rounded. In other words, in nearly all}
\par {\loch\f1\fs16\lang1033\i0\b0 cases you can ignore the problems of converting between types. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This is very reasonable but more surprising is the fact that the data type char can also be freely mixed with ints, floats and doubles. This will shock any programmer who has used}
\par {\loch\f1\fs16\lang1033\i0\b0 another language, as it's another example of C getting us closer than is customary to the way the machine works. A character is represented as an ASCII or some other code in the range O}
\par {\loch\f1\fs16\lang1033\i0\b0 to 255, and if you want you can use this integer code value in arithmetic. Another way of thinking about this is that a char variable is just a single-byte integer variable that can hold a number}
\par {\loch\f1\fs16\lang1033\i0\b0 in the range O to 255, which can optionally be interpreted as a character. Notice, however, that C gives you access to memory in the smallest chunks your machine works with, i.e. one byte}
\par {\loch\f1\fs16\lang1033\i0\b0 at a time, with no overheads. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Something To Declare:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Before you can use a variable you have to declare it. As we have seen above, to do this you state its type and then give its name. For example, int i; declares an integer variable. You}
\par {\loch\f1\fs16\lang1033\i0\b0 can declare any number of variables of the same type with a single statement. For example:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int a, b, c;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 declares three integers: a, b and c. You have to declare all the variables that you want to use at the start of the program. Later you will discover that exactly where you declare a variable}
\par {\loch\f1\fs16\lang1033\i0\b0 makes a difference, but for now you should put variable declarations after the opening curly bracket of the main program.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Here is an example program that includes some of the concepts outlined above. It includes a slightly more advanced use of the printf function which will covered in detail in the next part of}
\par {\loch\f1\fs16\lang1033\i0\b0 this course: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 /*}
\par {\loch\f1\fs16\lang1033\i0\b0 /*}
\par {\loch\f1\fs16\lang1033\i0\b0     Program#int.c}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     Another simple program}
\par {\loch\f1\fs16\lang1033\i0\b0     using int and printf}
\par {\loch\f1\fs16\lang1033\i0\b0 */}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #include }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 main()}
\par {\loch\f1\fs16\lang1033\i0\b0 \{}
\par {\loch\f1\fs16\lang1033\i0\b0     int a,b,average;}
\par {\loch\f1\fs16\lang1033\i0\b0     a=10;}
\par {\loch\f1\fs16\lang1033\i0\b0     b=6;}
\par {\loch\f1\fs16\lang1033\i0\b0     average = ( a+b ) / 2 ;}
\par {\loch\f1\fs16\lang1033\i0\b0     printf("Here ");}
\par {\loch\f1\fs16\lang1033\i0\b0     printf("is ");}
\par {\loch\f1\fs16\lang1033\i0\b0     printf("the ");}
\par {\loch\f1\fs16\lang1033\i0\b0     printf("answer... ");}
\par {\loch\f1\fs16\lang1033\i0\b0     printf("\\n");}
\par {\loch\f1\fs16\lang1033\i0\b0     printf("%d.",average);}
\par {\loch\f1\fs16\lang1033\i0\b0 \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 More On Initialising Variables:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 You can assign an initial value to a variable when you declare it. For example:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int i=1;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 sets the int variable to one as soon as it's created. This is just the same as:}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int i;}
\par {\loch\f1\fs16\lang1033\i0\b0 i=l;}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 but the compiler may be able to speed up the operation if you initialise the variable as part of its declaration. Don't assume that an uninitialised variable has a sensible value stored in it. Some}
\par {\loch\f1\fs16\lang1033\i0\b0 C compilers store 0 in newly created numeric variables but nothing in the C language compels them to do so. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Summary:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Variable names:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0      -should be lowercase for local variables }
\par {\loch\f1\fs16\lang1033\i0\b0      -should be UPPERCASE for symbolic constants (to be dicsussed later) }
\par {\loch\f1\fs16\lang1033\i0\b0      -only the first 31 characters of a variables name are significant }
\par {\loch\f1\fs16\lang1033\i0\b0      -must begin with a letter or _ (under score) character}
\par 
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic63}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Input and Output}}}}
}}{\loch\f1\fs16\lang1033{\fs28 Input and Output Functions }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Objectives:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Having read this section you should have a clearer idea of one of C's: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    1.input functions, called scanf }
\par {\loch\f1\fs16\lang1033\i0\b0    2.output functions, called printf }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 On The Run:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Even with arithmetic you can't do very much other than write programs that are the equivalent of a pocket calculator. The real break through comes when you can read values into variables}
\par {\loch\f1\fs16\lang1033\i0\b0 as the program runs. Notice the important words here: "as the program runs". You can already store values in variables using assignment. That is:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 a=100; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 stores 100 in the variable a each time you run the program, no matter what you do. Without some sort of input command every program would produce exactly the same result every time it}
\par {\loch\f1\fs16\lang1033\i0\b0 was run. This would certainly make debugging easy! But in practice, of course, we need programs to do different jobs each time they are run. There are a number of different C input}
\par {\loch\f1\fs16\lang1033\i0\b0 commands, the most useful of which is the scanf command. To read a single integer value into the variable called a you would use: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 scanf("%d",&a); }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 For the moment don't worry about what the %d or the >&a means - concentrate on the difference between this and: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 a=100; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 When the program reaches the scanf statement it pauses to give the user time to type something on the keyboard and continues only when users press <Enter>, or <Return>, to signal}
\par {\loch\f1\fs16\lang1033\i0\b0 that he, or she, has finished entering the value. Then the program continues with the new value stored in a. In this way, each time the program is run the user gets a chance to type in a}
\par {\loch\f1\fs16\lang1033\i0\b0 different value to the variable and the program also gets the chance to produce a different result! }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The final missing piece in the jigsaw is using the printf function, the one we have already used to print "Hello World", to print the value currently being stored in a variable. To display the}
\par {\loch\f1\fs16\lang1033\i0\b0 value stored in the variable a you would use: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 printf("The value stored in a is %d",a); }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The %d, both in the case of scanf and printf, simply lets the compiler know that the value being read in, or printed out, is a decimal integer - that is, a few digits but no decimal point. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Note: the scanf function does not prompt for an input. You should get in the habit of always using a printf function, informing the user of the program what they should type, before a}
\par {\loch\f1\fs16\lang1033\i0\b0 scanf function. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Input and Output Functions in More Detail:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 One of the advantages of C is that essentially it is a small language. This means that you can write a complete description of the language in a few pages. It doesn't have many keywords or}
\par {\loch\f1\fs16\lang1033\i0\b0 data types for that matter. What makes C so powerful is the way that these low-level facilities can be put together to make higher level facilities. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The only problem with this is that C programmers have a tendency to reinvent the wheel each time they want to go for a ride. It is also possible to write C programs in a variety of styles}
\par {\loch\f1\fs16\lang1033\i0\b0 which depend on the particular tricks and devices that a programmer chooses to use. Even after writing C for a long time you will still find the occasionally construction which makes you}
\par {\loch\f1\fs16\lang1033\i0\b0 think, "I never thought of that!" or, "what is that doing?" }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 One attempt to make C a more uniform language is the provision of standard libraries of functions that perform common tasks. We say standard but until the ANSI committee actually}
\par {\loch\f1\fs16\lang1033\i0\b0 produced a standard there was, and still is, some variation in what the standard libraries contained and exactly how the functions worked. Having said that we had better rush in quickly with}
\par {\loch\f1\fs16\lang1033\i0\b0 the reassurance that in practice the situation isn't that bad and most of the functions that are used frequently really are standard on all implementations. In particular the I/O functions vary very}
\par {\loch\f1\fs16\lang1033\i0\b0 little. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 It is now time to look at exactly how scanf and printf work and what they can do - you might be surprised at just how complex they really are! }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The original C specification did not include commands for input and output. Instead the compiler writers were supposed to implement library functions to suit their machines. In practice all}
\par {\loch\f1\fs16\lang1033\i0\b0 chose to implement printf and scanf and after a while C programmers started to think of them as if these functions were I/O keywords! It sometimes helps to remember that they are}
\par {\loch\f1\fs16\lang1033\i0\b0 functions on a par with any other functions you may care to define. If you want to you can provide your own implementations of printf or scanf or any of the other standard functions -}
\par {\loch\f1\fs16\lang1033\i0\b0 we'll discover how later. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 printf:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The printf (and scanf) functions do differ from the sort of functions that you will created for yourself in that they can take a variable number of parameters. In the case of printf the first}
\par {\loch\f1\fs16\lang1033\i0\b0 parameter is always a string (c.f. "Hello World") but after that you can include as many parameters of any type that you want to. That is, the printf function is usually of the form: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 printf(string,variable,variable,variable...) }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 where the ... means you can carry on writing a list of variables separated by commas as long as you want to. The string is all-important because it specifies the type of each variable in the}
\par {\loch\f1\fs16\lang1033\i0\b0 list and how you want it printed. The string is usually called the control string or the format string. The way that this works is that printf scans the string from left to right and prints on the}
\par {\loch\f1\fs16\lang1033\i0\b0 screen, or any suitable output device, any characters it encounters - except when it reaches a % character. The % character is a signal that what follows it is a specification for how the next}
\par {\loch\f1\fs16\lang1033\i0\b0 variable in the list of variables should be printed. printf uses this information to convert and format the value that was passed to the function by the variable and then moves on to process}
\par {\loch\f1\fs16\lang1033\i0\b0 the rest of the control string and anymore variables it might specify. For example: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 printf("Hello World"); }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 only has a control string and, as this contains no % characters it results in Hello World being displayed and doesn't need to display any variable values. The specifier %d means convert the}
\par {\loch\f1\fs16\lang1033\i0\b0 next value to a signed decimal integer and so: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 printf("Total = %d",total); }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 will print Total = and then the value passed by >total as a decimal integer. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 If you are familiar other programming languages then you may feel happy about the printf function because something like:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 printf("Total = %d",total);}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 looks like the sort of output command you might have used before. For example, in BASIC you would write: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 PRINT "Total = ",total }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 but the C view of output is at a lower level than you might expect. The %d isn't just a format specifier, it is a conversion specifier. It indicates the data type of the variable to be printed and}
\par {\loch\f1\fs16\lang1033\i0\b0 how that data type should be converted to the characters that appear on the screen. That is %d says that the next value to be printed is a signed integer value (i.e. a value that would be stored}
\par {\loch\f1\fs16\lang1033\i0\b0 in a standard int variable) and this should be converted into a sequence of characters (i.e. digits) representing the value in decimal. If by some accident the variable that you are trying to}
\par {\loch\f1\fs16\lang1033\i0\b0 display happens to be a float or a double then you will still see a value displayed - but it will not correspond to the actual value of the float or double. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The reason for this is twofold. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    1.The first difference is that an int uses two bytes to store its value, while a float uses four and a double uses eight. If you try to display a float or a double using %d then only the}
\par {\loch\f1\fs16\lang1033\i0\b0      first two bytes of the value are actually used. }
\par {\loch\f1\fs16\lang1033\i0\b0    2.The second problem is that even if there wasn't a size difference ints, floats and doubles use a different binary representation and %d expects the bit pattern to be a simple signed}
\par {\loch\f1\fs16\lang1033\i0\b0      binary integer. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This is all a bit technical, but that's in the nature of C. You can ignore these details as long as you remember two important facts:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    1.The specifier following % indicates the type of variable to be displayed as well as the format in which that the value should be displayed; }
\par {\loch\f1\fs16\lang1033\i0\b0    2.If you use a specifier with the wrong type of variable then you will see some strange things on the screen and the error often propagates to other items in the printf list. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 If this seems complicated then I would agree but I should also point out that the benefit is being able to treat what is stored in a variable in a more flexible way than other languages allow.}
\par {\loch\f1\fs16\lang1033\i0\b0 Other languages never let on to the programmer that what is in fact stored in a variable is a bit pattern, not the decimal value that appears to be stored there when you use a printf (or}
\par {\loch\f1\fs16\lang1033\i0\b0 whatever) statement. Of course whether you view this as an advantage depends on what you are trying to do. It certainly brings you closer to the way the machine works. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 You can also add an 'l' in front of a specifier to mean a long form of the variable type and h to indicate a short form (long and short will be covered later in this course). For example, %ld}
\par {\loch\f1\fs16\lang1033\i0\b0 means a long integer variable (usually four bytes) and %hd means short int. Notice that there is no distinction between a four-byte float and an eight-byte double. The reason is that a}
\par {\loch\f1\fs16\lang1033\i0\b0 float is automatically converted to a double precision value when passed to printf - so the two can be treated in the same way. (In pre-ANSI all floats were converted to double}
\par {\loch\f1\fs16\lang1033\i0\b0 when passed to a function but this is no longer true.) The only real problem that this poses is how to print the value of a pointer? The answer is that you can use %x to see the address in hex}
\par {\loch\f1\fs16\lang1033\i0\b0 or %o to see the address in octal. Notice that the value printed is the segment offset and not the absolute address - to understand what we am going on about you need to know something}
\par {\loch\f1\fs16\lang1033\i0\b0 about the structure of your processor. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The % Format Specifiers:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The % specifiers that you can use in ANSI C are: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0       Usual variable type           Display}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 %c        char                     single character}
\par {\loch\f1\fs16\lang1033\i0\b0 %d (%i)   int                      signed integer}
\par {\loch\f1\fs16\lang1033\i0\b0 %e (%E)   float or double          exponential format}
\par {\loch\f1\fs16\lang1033\i0\b0 %f        float or double          signed decimal}
\par {\loch\f1\fs16\lang1033\i0\b0 %g (%G)   float or double          use %f or %e as required}
\par {\loch\f1\fs16\lang1033\i0\b0 %o        int                      unsigned octal value}
\par {\loch\f1\fs16\lang1033\i0\b0 %p        pointer                  address stored in pointer}
\par {\loch\f1\fs16\lang1033\i0\b0 %s        array of char            sequence of characters}
\par {\loch\f1\fs16\lang1033\i0\b0 %u        int                      unsigned decimal}
\par {\loch\f1\fs16\lang1033\i0\b0 %x (%X)   int                      unsigned hex value}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Formatting Your Output:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The type conversion specifier only does what you ask of it - it convert a given bit pattern into a sequence of characters that a human can read. If you want to format the characters then you}
\par {\loch\f1\fs16\lang1033\i0\b0 need to know a little more about the printf function's control string. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Each specifier can be preceded by a modifier which determines how the value will be printed. The most general modifier is of the form: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 flag width.precision }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The flag can be any of:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 flag          meaning}
\par  
\par {\loch\f1\fs16\lang1033\i0\b0    -         left justify}
\par {\loch\f1\fs16\lang1033\i0\b0    +         always display sign}
\par {\loch\f1\fs16\lang1033\i0\b0    space     display space if there is no sign}
\par {\loch\f1\fs16\lang1033\i0\b0    0         pad with leading zeros}
\par {\loch\f1\fs16\lang1033\i0\b0    #         use alternate form of specifier}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The width specifies the number of characters used in total to display the value and precision indicates the number of characters used after the decimal point. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 For example, %10.3f will display the float using ten characters with three digits after the decimal point. Notice that the ten characters includes the decimal point, and a - sign if there is one.}
\par {\loch\f1\fs16\lang1033\i0\b0 If the value needs more space than the width specifies then the additional space is used - width specifies the smallest space that will be used to display the value. (This is quiet reassuring,}
\par {\loch\f1\fs16\lang1033\i0\b0 you won't be the first programmer whose program takes hours to run but the output results can't be viewed because the wrong format width has been specified!) }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The specifier %-1Od will display an int left justified in a ten character space. The specifier %+5d will display an int using the next five character locations and will add a + or - sign to the}
\par {\loch\f1\fs16\lang1033\i0\b0 value. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The only complexity is the use of the # modifier. What this does depends on which type of format it is used with: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 %#o    adds a leading 0 to the octal value}
\par {\loch\f1\fs16\lang1033\i0\b0 %#x    adds a leading 0x to the hex value}
\par {\loch\f1\fs16\lang1033\i0\b0 %#f or}
\par {\loch\f1\fs16\lang1033\i0\b0 %#e    ensures decimal point is printed}
\par {\loch\f1\fs16\lang1033\i0\b0 %#g    displays trailing zeros}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Strings will be discussed later but for now remember: if you print a string using the %s specifier then all of the characters stored in the array up to the first null will be printed. If you use a}
\par {\loch\f1\fs16\lang1033\i0\b0 width specifier then the string will be right justified within the space. If you include a precision specifier then only that number of characters will be printed. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 For example: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 printf("%s,Hello") }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 will print Hello, }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 printf("%25s ,Hello") }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 will print 25 characters with Hello right justified and }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 printf("%25.3s,Hello") }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 will print Hello right justified in a group of 25 spaces. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Also notice that it is fine to pass a constant value to printf as in printf("%s,Hello"). }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Finally there are the control codes: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 \\b       backspace}
\par {\loch\f1\fs16\lang1033\i0\b0 \\f       formfeed}
\par {\loch\f1\fs16\lang1033\i0\b0 \\n       new line}
\par {\loch\f1\fs16\lang1033\i0\b0 \\r       carriage return}
\par {\loch\f1\fs16\lang1033\i0\b0 \\t       horizontal tab}
\par {\loch\f1\fs16\lang1033\i0\b0 \\'       single quote}
\par {\loch\f1\fs16\lang1033\i0\b0 \\0       null}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 If you include any of these in the control string then the corresponding ASCII control code is sent to the screen, or output device, which should produce the effect listed. In most cases you}
\par {\loch\f1\fs16\lang1033\i0\b0 only need to remember \\n for new line. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 scanf:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Now that we have mastered the intricacies of printf you should find scanf very easy. The scanf function works in much the same way as the printf. That is it has the general form: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 scanf(control string,variable,variable,...) }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 In this case the control string specifies how strings of characters, usually typed on the keyboard, should be converted into values and stored in the listed variables. However there are a}
\par {\loch\f1\fs16\lang1033\i0\b0 number of important differences as well as similarities between scanf and printf. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The most obvious is that scanf has to change the values stored in the parts of computers memory that is associated with parameters (variables). }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 To understand this fully you will have to wait until we have covered functions in more detail. But, just for now, bare with us when we say to do this the scanf function has to have the}
\par {\loch\f1\fs16\lang1033\i0\b0 addresses of the variables rather than just their values. This means that simple variables have to be passed with a preceding >&. (Note for future reference: There is no need to do this}
\par {\loch\f1\fs16\lang1033\i0\b0 for strings stored in arrays because the array name is already a pointer.) }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The second difference is that the control string has some extra items to cope with the problems of reading data in. However, all of the conversion specifiers listed in connection with}
\par {\loch\f1\fs16\lang1033\i0\b0 printf can be used with scanf. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The rule is that scanf processes the control string from left to right and each time it reaches a specifier it tries to interpret what has been typed as a value. If you input multiple values then}
\par {\loch\f1\fs16\lang1033\i0\b0 these are assumed to be separated by white space - i.e. spaces, newline or tabs. This means you can type: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 3 4 5 }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 or }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 3}
\par {\loch\f1\fs16\lang1033\i0\b0 4}
\par {\loch\f1\fs16\lang1033\i0\b0 5}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 and it doesn't matter how many spaces are included between items. For example:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 scanf("%d %d",&i,&j);}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 will read in two integer values into i and j. The integer values can be typed on the same line or on different lines as long as there is at least one white space character between them. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The only exception to this rule is the %c specifier which always reads in the next character typed no matter what it is. You can also use a width modifier in scanf. In this case its effect is to}
\par {\loch\f1\fs16\lang1033\i0\b0 limit the number of characters accepted to the width. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 For example: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 scanf("%lOd",&i) }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 would use at most the first ten digits typed as the new value for i. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 There is one main problem with scanf function which can make it unreliable in certain cases. The reason being is that scanf tends to ignore white spaces, i.e. the space character. If you}
\par {\loch\f1\fs16\lang1033\i0\b0 require your input to contain spaces this can cause a problem. Therefore for string data input the function getstr() may well be more reliable as it records spaces in the input text and}
\par {\loch\f1\fs16\lang1033\i0\b0 treats them as an ordinary characters. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Custom Libraries:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 If you think printf and scanf don't seem enough to do the sort of job that any modern programmer expects to do, you would be right. In the early days being able to print a line at a time}
\par {\loch\f1\fs16\lang1033\i0\b0 was fine but today we expect to be able to print anywhere on the screen at any time. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The point is that as far as standard C goes simple I/O devices are stream-oriented - that is you send or get a stream of characters without any notion of being able to move the current}
\par {\loch\f1\fs16\lang1033\i0\b0 position in the stream. If you want to move backwards and forwards through the data then you need to use a direct access file. In more simple terms, C doesn't have a Tab(X,Y) or}
\par {\loch\f1\fs16\lang1033\i0\b0 Locate(X,Y) function or command which moves the cursor to the specified location! How are you ever going to write your latest block buster game, let alone build your sophisticated input}
\par {\loch\f1\fs16\lang1033\i0\b0 screens? }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Well you don't have to worry too much because although C may not define them as standard, all C implementations come with an extensive graphics/text function library that allows you to}
\par {\loch\f1\fs16\lang1033\i0\b0 do all of this and more. Such a library isn't standard, however the principles are always the same. The Borland and Microsoft offerings are usually considered as the two facto standards. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Summing It Up:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Now that we have arithmetic, a way of reading values in and a way of displaying them, it's possible to write a slightly more interesting program than "Hello World". Not much more}
\par {\loch\f1\fs16\lang1033\i0\b0 interesting, it's true, but what do you expect with two instructions and some arithmetic? }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Let's write a program that adds two numbers together and prints the result. (I told you it wasn't that much more interesting!) Of course, if you want to work out something else like fahrenheit}
\par {\loch\f1\fs16\lang1033\i0\b0 to centigrade, inches to centimetres or the size of your bank balance, then that's up to you - the principle is the same. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The program is a bit more complicated than you might expect, but only because of the need to let the user know what is happening: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #include <stdio.h>}
\par {\loch\f1\fs16\lang1033\i0\b0 main()}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0    int a,b,c;}
\par {\loch\f1\fs16\lang1033\i0\b0    printf("\\nThe first number is ");}
\par {\loch\f1\fs16\lang1033\i0\b0    scanf("%d",&a);}
\par {\loch\f1\fs16\lang1033\i0\b0    printf("The second number is ");}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0    {\lang1036 scanf("%d",&b);}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1036\i0\b0{\lang1036    }}{\loch\f1\fs16\lang1033c=a+b;}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0    printf("The answer is %d \\n",c);}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The first instruction declares three integer variables: a, b and c. The first two printf statements simply display message on the screen asking the user for the values. The scanf functions}
\par {\loch\f1\fs16\lang1033\i0\b0 then read in the values from the keyboard into a and b. These are added together and the result in c is displayed on the screen with a suitable message. Notice the way that you can include a}
\par {\loch\f1\fs16\lang1033\i0\b0 message in the printf statement along with the value. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Type the program in, compile it and link it and the result should be your first interactive program. Try changing it so that it works out something a little more adventurous. Try changing the}
\par {\loch\f1\fs16\lang1033\i0\b0 messages as well. All you have to remember is that you cannot store values or work out results greater than the range of an integer variable or with a fractional part.}
\par 
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic64}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Control Loops}}}}
}}{\loch\f1\fs16\lang1033{\fs28 Control Loops }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Objectives:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Having read this section you should have an idea about C's: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    1.Conditional, or Logical, Expressions as used in program control }
\par {\loch\f1\fs16\lang1033\i0\b0    2.the do while loop }
\par {\loch\f1\fs16\lang1033\i0\b0    3.the while loop }
\par {\loch\f1\fs16\lang1033\i0\b0    4.the for loop }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Go With The Flow:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Our programs are getting a bit more sophisticated, but they still lack that essential something that makes a computer so necessary. Exactly what they lack is the most difficult part to describe}
\par {\loch\f1\fs16\lang1033\i0\b0 to a beginner. There ar}
\par {\loch\f1\fs16\lang1033\i0\b0 e only two great ideas in computing. The first is the variable and you've already met that. The second is flow of control. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 When you write a list of instructions for someone to perform you usually expect them to follow the list from the top to the bottom, one at a time. This is the simple default flow of control}
\par {\loch\f1\fs16\lang1033\i0\b0 through a program. The C programs we have written so far use this one-after-another default flow of control. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This is fine and simple, but it limits the running time of any program we can write. Why? Simply because there is a limit to the number of instructions you can write and it doesn't take long for}
\par {\loch\f1\fs16\lang1033\i0\b0 a computer to read though and obey your list. So how is it that we have programs that run for hours on end if need be? The answer is statements that alter the one-after-another order of}
\par {\loch\f1\fs16\lang1033\i0\b0 obeying instructions. Perhaps the most useful is the loop. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Suppose we ask you to display "Hello World!" five times on the screen. Easy! you'd say: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #include <stdio.h>}
\par {\loch\f1\fs16\lang1033\i0\b0 main()}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0    printf("Hello World!\\n");}
\par {\loch\f1\fs16\lang1033\i0\b0    printf("Hello World!\\n");}
\par {\loch\f1\fs16\lang1033\i0\b0    printf("Hello World!\\n");}
\par {\loch\f1\fs16\lang1033\i0\b0    printf("Hello World!\\n");}
\par {\loch\f1\fs16\lang1033\i0\b0    printf("Hello World!\\n");}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Indeed, this does exactly what was asked. But now we up the bet and ask you to do the same job for 100 hellos or, if you're still willing to type that much code, maybe 1,000 Hello World's,}
\par {\loch\f1\fs16\lang1033\i0\b0 10,000 Hello World's, or whatever it takes you to realise this isn't a sensible method! }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 What you really need is some way of repeating the printf statements without having to write it out each time. The solution to this problem is the while loop or the do while loop. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The while and do while Loops:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 You can repeat any statement using either the while loop: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 while(condition) compound statement;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 or the do while loop: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 do compound statement while(condition); }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The condition is just a test to control how long you want the compound statement to carry on repeating. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Each line of a C program up to the semicolon is called a statement. The semicolon is the statement's terminator. The braces \{ and \} which have appeared at the beginning and end of our}
\par {\loch\f1\fs16\lang1033\i0\b0 program unit can also be used to group together related declarations and statements into a compound statement or a block. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 In the case of the while loop before the compound statement is carried out the condition is checked, and if it is true the statement is obeyed one more time. If the condition turns}
\par {\loch\f1\fs16\lang1033\i0\b0 out to be false, the looping isn't obeyed and the program moves on to the next statement. So you can see that the instruction really means while something or other is true keep on doing}
\par {\loch\f1\fs16\lang1033\i0\b0 the statement. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 In the case of the do while loop it will always execute the code within the loop at least once, since the condition controlling the loop is tested at the bottom of the loop. The do while}
\par {\loch\f1\fs16\lang1033\i0\b0 loop repeats the instruction while the condition is true. If the condition turns out to be false, the looping isn't obeyed and the program moves on to the next statement. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Conditions or Logical Expressions:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The only detail we need to clear up is what the condition (or Logical Expression) can be. How, for example, do we display 100 or 10,000 "Hello World!" messages? The condition}
\par {\loch\f1\fs16\lang1033\i0\b0 can be any test of one value against another. For example: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 a>0 }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 is true if a contains a value greater than zero; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 b<0 }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 is true if b contains a value less than zero. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The only complication is that the test for 'something equals something else' uses the character sequence == and not =. That's right: a test for equality uses two equal-signs, as in a==0, while}
\par {\loch\f1\fs16\lang1033\i0\b0 an assignment, as in a=0, uses one. This use of the double or single equal sign to mean slightly different things is a cause of many a program bug for beginner and expert alike! }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 So what about answering the question? What about the 100 "Hello World"s? Well, for the moment we know easily how to produce an infinite number of Hello World!"s using while loop: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #include <stdio.h>}
\par {\loch\f1\fs16\lang1033\i0\b0   main()}
\par {\loch\f1\fs16\lang1033\i0\b0    \{}
\par {\loch\f1\fs16\lang1033\i0\b0     while (1 == 1) printf("Hello World!\\n");}
\par {\loch\f1\fs16\lang1033\i0\b0    \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 and using the do while loop: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #include <stdio.h>}
\par {\loch\f1\fs16\lang1033\i0\b0   main()}
\par {\loch\f1\fs16\lang1033\i0\b0    \{}
\par {\loch\f1\fs16\lang1033\i0\b0     do}
\par {\loch\f1\fs16\lang1033\i0\b0       printf("Hello World!\\n");}
\par {\loch\f1\fs16\lang1033\i0\b0     while (1 == 1) }
\par {\loch\f1\fs16\lang1033\i0\b0    \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 If you type either of these programs in and run it you will find that your screen fills with a never ending list of "Hello World!"s. Why? Because the condition to keep the repeat going is ( 1 ==}
\par {\loch\f1\fs16\lang1033\i0\b0 1 ), one equals one in plain English, which is always true! So how do we stop the loop? In some cases it could be by pulling the plug out - but usually you can stop an infinite loop by}
\par {\loch\f1\fs16\lang1033\i0\b0 pressing Ctrl-Break or Ctrl-C. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 An infinite loop is sometimes useful - I certainly hope the program controlling the nearest nuclear power station is an infinite loop that never receives a Ctrl-Break signal! Most loops,}
\par {\loch\f1\fs16\lang1033\i0\b0 however, have to stop some time. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 To solve our problem of printing 100 "Hello World!"s we need a counter and a test for when that counter reaches 100. A counter is a simple variable that has one added to it each time}
\par {\loch\f1\fs16\lang1033\i0\b0 through the loop, using an instruction like this: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 a=a+1; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This always confuses beginners, because they aren't used to seeing the variable on both sides of the equal-sign. All this means is that a has one added to it to produce a new value, and this}
\par {\loch\f1\fs16\lang1033\i0\b0 value is stored back in the location called <B>a. If you're worried, try thinking about it as: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 temp = a+l;}
\par {\loch\f1\fs16\lang1033\i0\b0 a    = temp;}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The two approaches are more or less the same. C is a language where anything that's used often can be said concisely, so it lets you say "add one to a variable" using the shorter notation: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 ++a; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The double plus is read "increment a by one". Make sure you know that ++a; and a=a+1; are the same thing because you will often see both in typical C programs. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The increment operator ++ and the equivalent decrement operator --, can be used as either prefix (before the variable) or postfix (after the variable). Note: ++a increments a before using}
\par {\loch\f1\fs16\lang1033\i0\b0 its value; whereas a++ which means use the value in a then increment the value stored in a. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Now it is easy to print "Hello World!" 100 times using the while loop:}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #include <stdio.h>}
\par {\loch\f1\fs16\lang1033\i0\b0  main()}
\par {\loch\f1\fs16\lang1033\i0\b0   \{}
\par {\loch\f1\fs16\lang1033\i0\b0    int count;}
\par {\loch\f1\fs16\lang1033\i0\b0    count=0;}
\par {\loch\f1\fs16\lang1033\i0\b0    while (count < 100)}
\par {\loch\f1\fs16\lang1033\i0\b0     \{}
\par {\loch\f1\fs16\lang1033\i0\b0       ++count;}
\par {\loch\f1\fs16\lang1033\i0\b0       printf("Hello World!\\n");}
\par {\loch\f1\fs16\lang1033\i0\b0     \}}
\par {\loch\f1\fs16\lang1033\i0\b0   \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 [program] }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 or the do while loop:}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #include <stdio.h>}
\par {\loch\f1\fs16\lang1033\i0\b0  main()}
\par {\loch\f1\fs16\lang1033\i0\b0   \{}
\par {\loch\f1\fs16\lang1033\i0\b0    int count;}
\par {\loch\f1\fs16\lang1033\i0\b0    count=0;}
\par {\loch\f1\fs16\lang1033\i0\b0    do}
\par {\loch\f1\fs16\lang1033\i0\b0     \{}
\par {\loch\f1\fs16\lang1033\i0\b0       ++count;}
\par {\loch\f1\fs16\lang1033\i0\b0       printf("Hello, World!\\n");}
\par {\loch\f1\fs16\lang1033\i0\b0     \} while (count < 100) }
\par {\loch\f1\fs16\lang1033\i0\b0   \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Note: the use of the \{ and \} to form a compound statement; all statements between the braces will be executed before the loop check is made. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The integer variable count is declared and then set to zero, ready to count the number of times we have gone round the loop. Each time round the loop the value of count is checked against}
\par {\loch\f1\fs16\lang1033\i0\b0 100. As long as it is less, the loop carries on. Each time the loop carries on, count is incremented and "Hello World!" is printed - so eventually count does reach 100 and the loop stops.}
\par {\loch\f1\fs16\lang1033\i0\b0 These little programs are just a bit more subtle than you might think. Ask yourself, do they really print exactly 100 times? Ask yourself: what is the final value of count? If you want to make}
\par {\loch\f1\fs16\lang1033\i0\b0 sure you are right change the printf to: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 printf("count is %d",count); }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 and add a printf after the loop: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 printf("final value is %d",count); }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Make sure you understand why you get the results that you do. What would happen if you changed the initial value of count to be one rather than zero? }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Looping the Loop:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 We have seen that any list of statements enclosed in curly brackets is treated as a single statement, a compound statement. So to repeat a list of statements all you have to do is put them}
\par {\loch\f1\fs16\lang1033\i0\b0 inside a pair of curly brackets as in: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 while (condition)}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0    statementl;}
\par {\loch\f1\fs16\lang1033\i0\b0    statement2;}
\par {\loch\f1\fs16\lang1033\i0\b0    statement3;}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 which repeats the list while the condition is true. Notice that the statements within the curly brackets have to be terminated by semicolons as usual. Notice also that as the while statement}
\par {\loch\f1\fs16\lang1033\i0\b0 is a complete statement it too has to be terminated by a semi-colon - except for the influence of one other punctuation rule. You never have to follow a right curly bracket with a}
\par {\loch\f1\fs16\lang1033\i0\b0 semi-colon. This rule was introduced to make C look tidier by avoiding things like }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 \};\};\};\} }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 at the end of a complicated program. You can write the semi-colon after the right bracket if you want to, but most C programmers don't. You can use a compound statement anywhere you}
\par {\loch\f1\fs16\lang1033\i0\b0 can use a single statement. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The for Loop:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The while, and do-while, loop is a completely general way of repeating a section of program over and over again - and you don't really need anything else but... The while loop repeats a}
\par {\loch\f1\fs16\lang1033\i0\b0 list of instructions while some condition or other is true and often you want to repeat something a given number of times. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The traditional solution to this problem is to introduce a variable that is used to count the number of times that a loop has been repeated and use its value in the condition to end the loop. For}
\par {\loch\f1\fs16\lang1033\i0\b0 example, the loop: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 i=l;}
\par {\loch\f1\fs16\lang1033\i0\b0 while (i<10)}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0    printf("%d \\n",i);}
\par {\loch\f1\fs16\lang1033\i0\b0    ++i;}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 repeats while i is less than 10. As the ++ operator is used to add one to i each time through the loop you can see that i is a loop counter and eventualy it will get bigger than 10, i.e. the loop}
\par {\loch\f1\fs16\lang1033\i0\b0 will end. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The question is how many times does the loop go round? More specifically what values of i is the loop carried out for? If you run this program snippet you will find that it prints 1,2,3... and}
\par {\loch\f1\fs16\lang1033\i0\b0 finishes at 10. That is, the loop repeats 10 times for values of i from 1 to 10. This sort of loop - one that runs from a starting value to a finishing value going up by one each time - is so}
\par {\loch\f1\fs16\lang1033\i0\b0 common that nearly all programming languages provide special commands to implement it. In C this special type of loop can be implemented as a for loop. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 for ( counter=start_value; counter <= finish_value; ++counter )}
\par {\loch\f1\fs16\lang1033\i0\b0   compound statement}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 which is entirely equivalent to: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 counter=start;}
\par {\loch\f1\fs16\lang1033\i0\b0 while (couner <= finish)}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0   statements;}
\par {\loch\f1\fs16\lang1033\i0\b0   ++counter;}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The condition operator <= should be interpreted as less than or equal too. We will be covering all of C's conditions , or logical expressions, in the next section. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 For example to print the numbers 1 to 100 you could use: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 for ( i=l; i <= 100; ++i ) printf("%d \\n",i); }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 You can, of course repeat a longer list of instructions simply by using a compound statement. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The C for loop is much more flexible than this simple description. Indeed, many would be horrified at the way we have described the for loop without displaying its true generality, but}
\par {\loch\f1\fs16\lang1033\i0\b0 keep in mind that there is more to come. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 In the meantime consider the following program, it does a temperature conversion, but it also introduces one or two new concepts: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    1.our counter does not have to be incremented (deremented) by 1; we can use any value. }
\par {\loch\f1\fs16\lang1033\i0\b0    2.we can do calculations within the printf statement. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #include <stdio.h>}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 main()}
\par {\loch\f1\fs16\lang1033\i0\b0 \{}
\par {\loch\f1\fs16\lang1033\i0\b0     int fahr;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     for ( fahr = 0 ; fahr <= 300 ; fahr = fahr + 20)}
\par {\loch\f1\fs16\lang1033\i0\b0         printf("%4d %6.1f\\n" , fahr , (5.0/9.0)*(fahr-32));}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 and here's another one for you to look at: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #include <stdio.h>}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 main()}
\par {\loch\f1\fs16\lang1033\i0\b0 \{}
\par {\loch\f1\fs16\lang1033\i0\b0     int lower , upper , step;}
\par {\loch\f1\fs16\lang1033\i0\b0     float fahr , celsius;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     lower = 0  ;}
\par {\loch\f1\fs16\lang1033\i0\b0     upper = 300;}
\par {\loch\f1\fs16\lang1033\i0\b0     step  = 20 ;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     fahr  = lower;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     while ( fahr <= upper ) \{}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0                              {\lang1036 celsius = (5.0 / 9.0) * (fahr - 32.0);}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0                              printf("%4.0f %6.1f\\n" , fahr , celsius);}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1036\i0\b0{\lang1036                              }}{\loch\f1\fs16\lang1033fahr = fahr + step;}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0                             \}}
\par {\loch\f1\fs16\lang1033\i0\b0 \}}
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic65}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Conditional Execution}}}}
}}{\loch\f1\fs16\lang1033{\fs28 Conditional Execution }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Objectives:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Having read this section you should be able to: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    1.Program control with if , if-else and switch structures }
\par {\loch\f1\fs16\lang1033\i0\b0    2.have a better idea of what C understands as true and false. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Program Control:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 It is time to turn our attention to a different problem - conditional execution. We often need to be able to choose which set of instructions are obeyed according to a condition. For}
\par {\loch\f1\fs16\lang1033\i0\b0 example, if you're keeping a total and you need to display the message 'OK' if the value is greater than zero you would need to write something like:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 if (total>O) printf("OK");}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This is perfectly reasonable English, if somewhat terse, but it is also perfectly good C. The if statement allows you to evaluate a >condition and only carry out the statement, or compound}
\par {\loch\f1\fs16\lang1033\i0\b0 statement, that follows if the condition is true. In other words the printf will only be obeyed if the condition total > O is true. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 If the condition is false then the program continues with the next instruction. In general the if statement is of the following form: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 if (condition) statement;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 and of course the statement can be a compound statement. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Here's an example program using two if statements: }
\par 
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #include <stdio.h>}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 main()}
\par {\loch\f1\fs16\lang1033\i0\b0 \{}
\par {\loch\f1\fs16\lang1033\i0\b0     int a , b;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     do \{}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0         printf("\\nEnter first number: ");}
\par {\loch\f1\fs16\lang1033\i0\b0         scanf("%d" , &a);}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0         printf("\\nEnter second number: ");}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0         {\lang1036 scanf("%d" , &b);}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1036\i0\b0{\lang1036         }}{\loch\f1\fs16\lang1033if (a<b) printf("\\n\\nFirst number is less than second\\n\\n");}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0         if (b<a) printf("Second number is less than first\\n\\n");}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0        \} while (a < 999);}
\par {\loch\f1\fs16\lang1033\i0\b0 \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Here's another program using an if keyword and a compound statement or a block: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #include <stdio.h>}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 main()}
\par {\loch\f1\fs16\lang1033\i0\b0 \{}
\par {\loch\f1\fs16\lang1033\i0\b0     int a , b;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     do \{}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0         printf("\\nEnter first number: ");}
\par {\loch\f1\fs16\lang1033\i0\b0         scanf("%d" , &a);}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0         printf("\\nEnter second number: ");}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0         {\lang1036 scanf("%d" , &b);}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1036\i0\b0{\lang1036         }}{\loch\f1\fs16\lang1033if (a<b) \{}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0                   printf("\\n\\nFirst number is less than second\\n");}
\par {\loch\f1\fs16\lang1033\i0\b0                   printf("Their difference is : %d\\n" , b-a);}
\par {\loch\f1\fs16\lang1033\i0\b0                   printf("\\n");}
\par {\loch\f1\fs16\lang1033\i0\b0                  \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0         printf("\\n");}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0        \} while (a < 999);}
\par {\loch\f1\fs16\lang1033\i0\b0 \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The if statement lets you execute or skip an instruction depending on the value of the condition. Another possibility is that you might want to select one of two possible statements - one}
\par {\loch\f1\fs16\lang1033\i0\b0 to be obeyed when the condition is true and one to be obeyed when the condition is false. You can do this using the }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 if (condition) statement1;}
\par {\loch\f1\fs16\lang1033\i0\b0 else statement2;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 form of the if statement. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 In this case statement1 is carried out if the condition is true and statement2 if the condition is false. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Notice that it is certain that one of the two statements will be obeyed because the condition has to be either true or false! You may be puzzled by the semicolon at the end of the if part}
\par {\loch\f1\fs16\lang1033\i0\b0 of the statement. The if (condition) statement1 part is one statement and the else statement2 part behaves like a second separate statement, so there has to be semi-colon}
\par {\loch\f1\fs16\lang1033\i0\b0 terminating the first statement. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Logical Expressions:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 So far we have assumed that the way to write the conditions used in loops and if statements is so obvious that we don't need to look more closely. In fact there are a number of}
\par {\loch\f1\fs16\lang1033\i0\b0 deviations from what you might expect. To compare two values you can use the standard symbols:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 >   (greater than)}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 <   (less than)}
\par    
\par {\loch\f1\fs16\lang1033\i0\b0 >=  (for greater than or equal to )}
\par {\loch\f1\fs16\lang1033\i0\b0 <=  (for less than or equal to)}
\par {\loch\f1\fs16\lang1033\i0\b0 ==  (to test for equality).}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The reason for using two equal signs for equality is that the single equals sign always means store a value in a variable - i.e. it is the assignment operator. This causes beginners lots of}
\par {\loch\f1\fs16\lang1033\i0\b0 problems because they tend to write: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 if (a = 10) instead of if (a == 10) }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The situation is made worse by the fact that the statement if (a = 10) is legal and causes no compiler error messages! It may even appear to work at first because, due to a logical quirk}
\par {\loch\f1\fs16\lang1033\i0\b0 of C, the assignment actually evaluates to the value being assigned and a non-zero value is treated as true (see below). Confused? I agree it is confusing, but it gets easier. . . }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Just as the equals condition is written differently from what you might expect so the non-equals sign looks a little odd. You write not equals as !=. For example: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 if (a != 0) }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 is 'if a is not equal to zero'. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 An example program showing the if else construction now follows:}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #include <stdio.h>}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 main ()}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0    int num1, num2;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    printf("\\nEnter first number ");}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0    {\lang1036 scanf("%d",&num1);}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1036\i0\b0{\lang1036    }}{\loch\f1\fs16\lang1033printf("\\nEnter second number ");}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0    {\lang1036 scanf("%d",&num2);}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1036\i0\b0{\lang1036    }}{\loch\f1\fs16\lang1033if (num2 ==0) printf("\\n\\nCannot devide by zero\\n\\n");}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0    else          printf("\\n\\nAnswer is %d\\n\\n",num1/num2);}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This program uses an if and else statement to prevent division by 0 from occurring. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 True and False in C:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Now we come to an advanced trick which you do need to know about, but if it only confuses you, come back to this bit later. Most experienced C programmers would wince at the}
\par {\loch\f1\fs16\lang1033\i0\b0 expression if(a!=0). }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The reason is that in the C programming language dosen't have a concept of a Boolean variable, i.e. a type class that can be either true or false. Why bother when we can use numerical}
\par {\loch\f1\fs16\lang1033\i0\b0 values. In C true is represented by any numeric value not equal to 0 and false is represented by 0. This fact is usually well hidden and can be ignored, but it does allow you to write }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 if(a != 0) just as if(a) }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 because if a isn't zero then this also acts as the value true. It is debatable if this sort of shortcut is worth the three characters it saves. Reading something like }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 if(!done) }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 as 'if not done' is clear, but if(!total) is more dubious. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Using break and continue Within Loops:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The break statement allows you to exit a loop from any point within its body, bypassing its normal termination expression. When the break statement is encountered inside a loop, the loop}
\par {\loch\f1\fs16\lang1033\i0\b0 is imediately terminated, and program control resumes at the next statement following the loop. The break statement can be used with all three of C's loops. You can have as many}
\par {\loch\f1\fs16\lang1033\i0\b0 statements within a loop as you desire. It is generally best to use the break for special purposes, not as your normal loop exit. break is also used in conjunction with functions and >case}
\par {\loch\f1\fs16\lang1033\i0\b0 statements which will be covered in later sections. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The continue statement is somewhat the opposite of the break statement. It forces the next iteration of the loop to take place, skipping any code in between itself and the test condition of}
\par {\loch\f1\fs16\lang1033\i0\b0 the loop. In while and do-while loops, a continue statement will cause control to go directly to the test condition and then continue the looping process. In the case of the for loop, the}
\par {\loch\f1\fs16\lang1033\i0\b0 increment part of the loop continues. One good use of continue is to restart a statement sequence when an error occurs. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #include <stdio.h>}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 main()}
\par {\loch\f1\fs16\lang1033\i0\b0 \{}
\par {\loch\f1\fs16\lang1033\i0\b0     int x ;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     for ( x=0 ; x<=100 ; x++) \{}
\par {\loch\f1\fs16\lang1033\i0\b0                                if (x%2) continue;}
\par {\loch\f1\fs16\lang1033\i0\b0                                printf("%d\\n" , x);}
\par {\loch\f1\fs16\lang1033\i0\b0                               \}}
\par {\loch\f1\fs16\lang1033\i0\b0 \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Here we have used C's modulus operator: %. A expression: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 a % b }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 produces the remainder when a is divided by b; and zero when there is no remainder. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Here's an example of a use for the break statement: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #include <stdio.h>}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 main()}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 \{}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0     int t ;}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0     for ( ; ; ) \{}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0                  scanf("%d" , &t)   ;}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1036\i0\b0{\lang1036                  }}{\loch\f1\fs16\lang1033if ( t==10 ) break ;}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0                 \}}
\par {\loch\f1\fs16\lang1033\i0\b0     printf("End of an infinite loop...\\n");}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Select Paths with switch:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 While if is good for choosing between two alternatives, it quickly becomes cumbersome when several alternatives are needed. C's solution to this problem is the switch statement. The}
\par {\loch\f1\fs16\lang1033\i0\b0 switch statement is C's multiple selection statement. It is used to select one of several alternative paths in program execution and works like this: A variable is successively tested against a}
\par {\loch\f1\fs16\lang1033\i0\b0 list of integer or character constants. When a match is found, the statement sequence associated with the match is executed. The general form of the switch statement is:}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 switch(expression) }
\par {\loch\f1\fs16\lang1033\i0\b0 \{}
\par {\loch\f1\fs16\lang1033\i0\b0   case constant1:   statement sequence; break;}
\par {\loch\f1\fs16\lang1033\i0\b0   case constant2:   statement sequence; break;}
\par {\loch\f1\fs16\lang1033\i0\b0   case constant3:   statement sequence; break;}
\par {\loch\f1\fs16\lang1033\i0\b0   .}
\par {\loch\f1\fs16\lang1033\i0\b0   .}
\par {\loch\f1\fs16\lang1033\i0\b0   .}
\par {\loch\f1\fs16\lang1033\i0\b0   default:   statement sequence; break;}
\par {\loch\f1\fs16\lang1033\i0\b0 \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Each case is labelled by one, or more, constant expressions (or integer-valued constants). The default statement sequence is performed if no matches are found. The default is optional.}
\par {\loch\f1\fs16\lang1033\i0\b0 If all matches fail and default is absent, no action takes place. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 When a match is found, the statement sequence asociated with that case are executed until break is encountered. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 An example program follows: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #include <stdio.h>}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 main()}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0   int i;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   printf("Enter a number between 1 and 4");}
\par {\loch\f1\fs16\lang1033\i0\b0   scanf("%d",&i);}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   switch (i)}
\par {\loch\f1\fs16\lang1033\i0\b0    \{}
\par {\loch\f1\fs16\lang1033\i0\b0      case 1:}
\par {\loch\f1\fs16\lang1033\i0\b0       printf("one");}
\par {\loch\f1\fs16\lang1033\i0\b0       break;}
\par {\loch\f1\fs16\lang1033\i0\b0      case 2:}
\par {\loch\f1\fs16\lang1033\i0\b0       printf("two");}
\par {\loch\f1\fs16\lang1033\i0\b0       break;}
\par {\loch\f1\fs16\lang1033\i0\b0      case 3:}
\par {\loch\f1\fs16\lang1033\i0\b0       printf("three");}
\par {\loch\f1\fs16\lang1033\i0\b0       break;}
\par {\loch\f1\fs16\lang1033\i0\b0      case 4:}
\par {\loch\f1\fs16\lang1033\i0\b0       printf("four");}
\par {\loch\f1\fs16\lang1033\i0\b0       break;}
\par {\loch\f1\fs16\lang1033\i0\b0      default:}
\par {\loch\f1\fs16\lang1033\i0\b0       printf("unrecognized number");}
\par {\loch\f1\fs16\lang1033\i0\b0    \}    /* end of switch */}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This simple program recognizes the numbers 1 to 4 and prints the name of the one you enter. The switch statement differs from if, in that switch can only test for equality, whereas the if}
\par {\loch\f1\fs16\lang1033\i0\b0 conditional expression can be of any type. Also switch will work with only int and char types. You cannot for example, use floating-point numbers. If the statement sequence includes}
\par {\loch\f1\fs16\lang1033\i0\b0 more than one statement they will have to be enclosed with \{\} to form a compound statement.}
\par 
\par  
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic66}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Structure and Nesting}}}}
}}{\loch\f1\fs16\lang1033{\fs28 Structure and Nesting}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Objectives:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This section brings together the various looping mechanisms available to the C programmer with the program control constructs we met in the last section. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 We also demonstrates a neat trick with random numbers. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 It is one of the great discoveries of programming that you can write any program using just simple while loops and if statements. You don't need any other control statements at all. Of}
\par {\loch\f1\fs16\lang1033\i0\b0 course it might be nice to include some other types of control statement to make life easy - for example, you don't need the for loop, but it is good to have! So as long as you understand the}
\par {\loch\f1\fs16\lang1033\i0\b0 if and the while loop in one form or another you can write any program you want to. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 If you think that a loop and an if statement are not much to build programs then you are missing an important point. It's not just the statements you have, but the way you can put them}
\par {\loch\f1\fs16\lang1033\i0\b0 together. You can include an if statement within a loop, loops within loops are also OK, as are loops in ifs, and ifs in ifs and so on. This putting one control statement inside another is}
\par {\loch\f1\fs16\lang1033\i0\b0 called nesting and it is really what allows you to make a program as complicated as you like. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Think of a number:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Now let's have a go at writing the following program: 'It thinks of a number in the range 0 to 99 and then asks the user to guess it'. This sounds complicated, especially the 'thinks of a}
\par {\loch\f1\fs16\lang1033\i0\b0 number' part, but all you need to know is that the statement: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 r = rand() }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 will store a random number in the integer variable r. The standard library function rand() randomly picks a number within the range 0 to 32767, but this might vary from machine to}
\par {\loch\f1\fs16\lang1033\i0\b0 machine. Look upon rand() as being a large dice. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Our problem is to select a number between 0 and 99 and not between 0 and 32767. How can we get our random number to within our range? The rand() function will produce numbers}
\par {\loch\f1\fs16\lang1033\i0\b0 such as: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 2567}
\par {\loch\f1\fs16\lang1033\i0\b0 134}
\par {\loch\f1\fs16\lang1033\i0\b0 20678}
\par {\loch\f1\fs16\lang1033\i0\b0 15789}
\par {\loch\f1\fs16\lang1033\i0\b0 32001}
\par {\loch\f1\fs16\lang1033\i0\b0 15987}
\par {\loch\f1\fs16\lang1033\i0\b0 etc...}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 If you look at the last two digits of all of these numbers they would form our random set! To select just these numbers we can use an arithmetic calculation of the following form: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 r = rand() % 100 }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 That is, to get the number into the right range you simply take the remainder on dividing by 100, ie a value in the range 0 to 99. You should remember this neat programming trick, you'll be}
\par {\loch\f1\fs16\lang1033\i0\b0 surprised how often it is required. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Our solution to the problem is as follows: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #include <stdio.h>}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 main()}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0    int target;}
\par {\loch\f1\fs16\lang1033\i0\b0    int guess;}
\par {\loch\f1\fs16\lang1033\i0\b0    int again;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    printf("\\n Do you want to guess a number 1 =Yes, 0=No ");}
\par {\loch\f1\fs16\lang1033\i0\b0    scanf("%d",&again);}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    while (again)}
\par {\loch\f1\fs16\lang1033\i0\b0     \{}
\par {\loch\f1\fs16\lang1033\i0\b0       target = rand() % 100;}
\par {\loch\f1\fs16\lang1033\i0\b0       guess  = target + l;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0       while(target!=guess)}
\par {\loch\f1\fs16\lang1033\i0\b0        \{}
\par {\loch\f1\fs16\lang1033\i0\b0          printf('\\n What is your guess ? ");}
\par {\loch\f1\fs16\lang1033\i0\b0          scanf("%d",&guess);}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0          if (target>guess) printf("Too low");}
\par {\loch\f1\fs16\lang1033\i0\b0          else printf("Too high");}
\par {\loch\f1\fs16\lang1033\i0\b0        \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0       printf("\\n Well done you got it! \\n");}
\par {\loch\f1\fs16\lang1033\i0\b0       printf("\\nDo you want to guess a number 1=Yes, 0=No");}
\par {\loch\f1\fs16\lang1033\i0\b0       scanf("%d".&again);}
\par {\loch\f1\fs16\lang1033\i0\b0     \}}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This looks like a very long and complicated program, but it isn't. Essentially it used two loops and an if/else which in English could be summarised as:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 while(again) \{}
\par {\loch\f1\fs16\lang1033\i0\b0   think of a number}
\par {\loch\f1\fs16\lang1033\i0\b0   while (user hasn't guessed it)}
\par {\loch\f1\fs16\lang1033\i0\b0    \{}
\par {\loch\f1\fs16\lang1033\i0\b0      get users guess.}
\par {\loch\f1\fs16\lang1033\i0\b0      if (target < guess) tell the user the guess is low }
\par {\loch\f1\fs16\lang1033\i0\b0      else                tell the user the guess is high}
\par {\loch\f1\fs16\lang1033\i0\b0    \}}
\par {\loch\f1\fs16\lang1033\i0\b0 \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The integer variable again is used to indicate that the user wants to carry on playing. If it is 0 then the loop stops so 0 = No, and 1, or any other non-zero value, = Yes. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 If you try this program out you will discover that it has a slight flaw - not so much a bug, more a feature. If the user guesses the correct value the program still tells the user that the guess is}
\par {\loch\f1\fs16\lang1033\i0\b0 too high and then congratulates them that they have the correct value. Such problems with how loops end are common and you have to pay attention to details such as this. There are a}
\par {\loch\f1\fs16\lang1033\i0\b0 number of possible solutions, but the most straight forward is to change the inner loop so that the first guess is asked for before the loop begins. This shifts the test for the loop to stop to}
\par {\loch\f1\fs16\lang1033\i0\b0 before the test for a high or low guess: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #include <stdio.h>}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 main()}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0    int target;}
\par {\loch\f1\fs16\lang1033\i0\b0    int guess;}
\par {\loch\f1\fs16\lang1033\i0\b0    int again;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    printf("\\n Do you want to guess a number 1 =Yes, 0=No ");}
\par {\loch\f1\fs16\lang1033\i0\b0    scanf("%d",&again);}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    while (again)}
\par {\loch\f1\fs16\lang1033\i0\b0     \{}
\par {\loch\f1\fs16\lang1033\i0\b0       target = rand() % 100;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0       printf('\\n What is your guess ? ");}
\par {\loch\f1\fs16\lang1033\i0\b0       scanf("%d",&guess);}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0       while(target!=guess)}
\par {\loch\f1\fs16\lang1033\i0\b0        \{}
\par {\loch\f1\fs16\lang1033\i0\b0          if (target>guess) printf("Too low");}
\par {\loch\f1\fs16\lang1033\i0\b0          else printf("Too high");}
\par {\loch\f1\fs16\lang1033\i0\b0          printf('\\n What is your guess ? ");}
\par {\loch\f1\fs16\lang1033\i0\b0          scanf("%d",&guess);}
\par {\loch\f1\fs16\lang1033\i0\b0        \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0       printf("\\n Well done you got it! \\n");}
\par {\loch\f1\fs16\lang1033\i0\b0       printf("\\n Do you want to guess a number 1=Yes, 0=No");}
\par {\loch\f1\fs16\lang1033\i0\b0       scanf("%d".&again);}
\par {\loch\f1\fs16\lang1033\i0\b0     \}}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 If you want to be sure that you understand what is going on here, ask yourself why the line: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 guess = target + 1; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 was necessary in the first version of the program and not in the second?}
\par 
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic67}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Functions and Prototypes}}}}
}}{\loch\f1\fs16\lang1033{\fs28 Functions and Prototypes }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Objectives:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Having read this section you should be able to: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    1.program using correctly defined C functions }
\par {\loch\f1\fs16\lang1033\i0\b0    2.pass the value of local variables into your C functions }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Functions - C's Building Blocks:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Some programmers might consider it a bit early to introduce the C function - but we think you can't get to it soon enough. It isn't a difficult idea and it is incredibly useful. You could say that}
\par {\loch\f1\fs16\lang1033\i0\b0 you only really start to find out what C programming is all about when you start using functions. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 C functions are the equivalent of what in other languages would be called subroutines or procedures. If you are familiar with another language you also need to know that C only has}
\par {\loch\f1\fs16\lang1033\i0\b0 functions, so don't spend time looking for the definition of subroutines or procedures - in C the function does everything! }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 A function is simply a chunk of C code (statements) that you have grouped together and given a name. The value of doing this is that you can use that "chunk" of code repeatedly simply by}
\par {\loch\f1\fs16\lang1033\i0\b0 writing its name. For example, if you want to create a function that prints the word "Hello" on the screen and adds one to variable called total then the chunk of C code that you want to}
\par {\loch\f1\fs16\lang1033\i0\b0 turn into a function is just: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 printf("Hello");}
\par {\loch\f1\fs16\lang1033\i0\b0 total = total + l;}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 To turn it into a function you simply wrap the code in a pair of curly brackets to convert it into a single compound statement and write the name that you want to give it in front of the}
\par {\loch\f1\fs16\lang1033\i0\b0 brackets: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 demo()}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0   printf("Hello");}
\par {\loch\f1\fs16\lang1033\i0\b0   total = total + 1;}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Don't worry for now about the curved brackets after the function's name. Once you have defined your function you can use it within a program: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 main()}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0   demo();}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 In this program the instruction demo (); is entirely equivalent to writing out all of the statements in the function. What we have done is to create an new C function and this, of course, is the}
\par {\loch\f1\fs16\lang1033\i0\b0 power of functions. When you are first introduced to the idea of functions, or their equivalent in other languages, it is easy to fall into the trap of thinking that they are only useful when you}
\par {\loch\f1\fs16\lang1033\i0\b0 want to use a block of code more than once. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Functions are useful here but they have a more important purpose. If you are creating a long program then functions allow you to split it into "bite-sized" chunks which you can work on in}
\par {\loch\f1\fs16\lang1033\i0\b0 isolation. As every C programmer knows, "functions are the building blocks of programs." }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Functions and Local Variables:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Now that the philosophy session is over we have to return to the details - because as it stands the demo function will not work. The problem is that the variable total isn't declared}
\par {\loch\f1\fs16\lang1033\i0\b0 anywhere. A function is a complete program sub-unit in its own right and you can declare variables within it just as you can within the main program. If you look at the main program we}
\par {\loch\f1\fs16\lang1033\i0\b0 have been using you will notice it is in fact a function that just happens to be called "main"! So to make demo work we have to add the declaration of the variable total: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 demo()}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0   int total; }
\par {\loch\f1\fs16\lang1033\i0\b0   printf("Hello"); }
\par {\loch\f1\fs16\lang1033\i0\b0   total=total+1; }
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Now this raises the question of where exactly total is a valid variable. You can certainly use total within the function that declares it - this much seems reasonable - but what about other}
\par {\loch\f1\fs16\lang1033\i0\b0 functions and, in particular, what about the main program? The simple answer is that total is a variable that belongs to the demo function. It cannot be used in other functions, it doesn't}
\par {\loch\f1\fs16\lang1033\i0\b0 even exist in other functions and it certainly has nothing to do with any variable of the same name that you declare within other functions. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This is what we hinted at when we said that functions were isolated chunks of code. Their isolation is such that variables declared within the function can only be used within that function.}
\par {\loch\f1\fs16\lang1033\i0\b0 These variables are known as local variables and as their name suggests are local to the function they have been declared in. If you are used to a language where every variable is usable all}
\par {\loch\f1\fs16\lang1033\i0\b0 the time this might seem silly and restrictive - but it isn't. It's what makes it possible to break a large program down into smaller and more manageable chunks. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The fact that total is only usable within the demo function is one thing - but notice we said that it only existed within this function, which is a more subtle point. The variables that a function}
\par {\loch\f1\fs16\lang1033\i0\b0 declares are created when the function is started and destroyed when the function is finished. So if the intention is to use total to count the number of times the >demo function is used -}
\par {\loch\f1\fs16\lang1033\i0\b0 forget it! Each time demo is used the variable total is created afresh, and at the end of the function the variable goes up in a puff of smoke along with its value. So no matter how many times}
\par {\loch\f1\fs16\lang1033\i0\b0 you run demo total will only ever reach a value of 1, assuming that it's initialised to 0. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Making The Connections:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Functions are isolated, and whats more nothing survives after they have finished. Put like this a function doesn't seem to be that useful because you can't get data values in, you can't get data}
\par {\loch\f1\fs16\lang1033\i0\b0 values out, and they don't remember anything that happens to them! }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 To be useful there has to be a way of getting data into and out of a function, and this is the role of the curved brackets. You can define special variables called parameters which are used to}
\par {\loch\f1\fs16\lang1033\i0\b0 carry data values into a function. Parameters are listed and declared in between the () brackets in the function's definition. For example: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  sum( int a, int b)}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0   int result; }
\par {\loch\f1\fs16\lang1033\i0\b0   result=a + b;}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 defines a function called sum with two parameters a and b, both integers. Notice that the result variable is declared in the usual way within the body of the function. Also, notice that the}
\par {\loch\f1\fs16\lang1033\i0\b0 parameters a and b are used within the function in the same way as normal variables - which indeed they are. What is more, they are still local variables and have nothing at all to do with}
\par {\loch\f1\fs16\lang1033\i0\b0 any variables called a and b defined in any other function. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The only way in which parameters are any different is that you can give them initial values when the function starts by writing the values between the round brackets. So }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 sum(l,2); }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 is a call to the sum function with a set to 1 and b set to 2 and so result is set to 3. You can also initialise parameters to the result of expressions such as: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 sum(x+2,z*10); }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 which will set a equal to whatever x+2 works out to be and b equal to whatever z*10 works out to be. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 As a simpler case you can also set a parameter to the value in a single variable - for example: }
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 sum(x,y); }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 will set a to the value stored in x and b to the value stored in y. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Parameters are the main way of getting values into a function, but how do we get values out? There is no point in expecting the >result variable to somehow magically get its value out of the}
\par {\loch\f1\fs16\lang1033\i0\b0 sum function - after all, it is a local variable and is destroyed when sum is finished. You might try something like: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  sum(int a, int b, int result)}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0   int result;}
\par {\loch\f1\fs16\lang1033\i0\b0   result = a + b;}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 but it doesn't work. Parameters are just ordinary variables that are set to an initial value when the function starts running - they don't pass values back to the program that used the function.}
\par {\loch\f1\fs16\lang1033\i0\b0 That is: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 sum(l,2,r); }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 doesn't store 1+2 in r because the value in r is used to initialise the value in result and not vice versa. You can even try }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 sum(l,2,result); }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 and it still will not work - the variable result within the function has nothing to do with the variable result used in any other program. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The simplest way to get a value out of a function is to use the return instruction. A function can return a value via its name - it's as if the name was a variable and had a value. The value that}
\par {\loch\f1\fs16\lang1033\i0\b0 is returned is specified by the instruction: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 return value; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 which can occur anywhere within the function, not just as the last instruction - however, a return always terminates the function and returns control back to the calling function. The only}
\par {\loch\f1\fs16\lang1033\i0\b0 complication is that as the function's name is used to return the value it has to be given a data type. This is achieved by writing the data type in front of the function's name. For example: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int sum(a,b); }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 So now we can at last write the correct version of the sum function: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  int sum(int a, int b)}
\par {\loch\f1\fs16\lang1033\i0\b0   \{}
\par {\loch\f1\fs16\lang1033\i0\b0    int result;}
\par {\loch\f1\fs16\lang1033\i0\b0    result = a + b;}
\par {\loch\f1\fs16\lang1033\i0\b0    return result;}
\par {\loch\f1\fs16\lang1033\i0\b0   \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 and to use it you would write something like: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 r=sum(1,2); }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 which would add 1 to 2 and store the result in r. You can use a function anywhere that you can use a variable. For example, }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 r=sum(1,2)*3 }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 is perfectly OK, as is }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 r=3+sum(1,2)/n-10 }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Obviously, the situation with respect to the number of inputs and outputs of a function isn't equal. That is you can create as many parameters as you like but a function can return only a}
\par {\loch\f1\fs16\lang1033\i0\b0 single value. (Later on we will have to find ways of allowing functions to return more than one value.) }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 So to summarise: a function has the general form: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  type FunctionName(type declared parameter list)}
\par {\loch\f1\fs16\lang1033\i0\b0   \{}
\par {\loch\f1\fs16\lang1033\i0\b0    statements that make up the function}
\par {\loch\f1\fs16\lang1033\i0\b0   \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 and of course a function can contain any number of return statements to specify its return value and bring the function to an end. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 There are some special cases and defaults we need to look at before moving on. You don't have to specify a parameter list if you don't want to use any parameters - but you still need the}
\par {\loch\f1\fs16\lang1033\i0\b0 empty brackets! You don't have to assign the function a type in which case it defaults to int. A function doesn't have to return a value and the program that makes use of a function doesn't}
\par {\loch\f1\fs16\lang1033\i0\b0 have to save any value it does return. For example, it is perfectly OK to use: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 sum(1,2); }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 which simply throws away the result of adding 1 to 2. As this sort of thing offends some programmers you can use the data type void to indicate that a function doesn't return a value. For}
\par {\loch\f1\fs16\lang1033\i0\b0 example: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 void demo(); }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 is a function with no parameters and no return value. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 void is an ANSI C standard data type. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The break statement covered in a previous section can be used to exit a function. The break statement is usually linked with an if statement checking for a particular value. For example: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 if (x==1) break; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 If x contained 1 then the fuction would exit and return to the calling program. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Functions and Prototypes:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Where should a function's definition go in relation to the entire program - before or after main()? The only requirement is that the function's type has to be known before it is actually used.}
\par {\loch\f1\fs16\lang1033\i0\b0 One way is to place the function definition earlier in the program than it is used - for example, before main(). The only problem is that most C programmers would rather put the main}
\par {\loch\f1\fs16\lang1033\i0\b0 program at the top of the program listing. The solution is to declare the function separately at the start of the program. For example:}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  int sum();}
\par {\loch\f1\fs16\lang1033\i0\b0  main()}
\par {\loch\f1\fs16\lang1033\i0\b0   \{}
\par {\loch\f1\fs16\lang1033\i0\b0    etc...}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 declares the name sum to be a function that returns an integer. As long as you declare functions before they are used you can put the actual definition anywhere you like.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 By default if you don't declare a function before you use it then it is assumed to be an int function - which is usually, but not always, correct. It is worth getting into the habit of putting}
\par {\loch\f1\fs16\lang1033\i0\b0 function declarations at the start of your programs because this makes them easier to convert to full ANSI C. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 What is ANSI C?:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 When C was first written the standard was set by its authors Kernighan and Ritche - hence "K&R C". In 1990, an international ANSI standard for C was established which differs from}
\par {\loch\f1\fs16\lang1033\i0\b0 K&AMPR C in a number of ways. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The only really important difference is the use of function prototypes. To allow the compiler to check that you are using functions correctly ANSI C allows you to include a function}
\par {\loch\f1\fs16\lang1033\i0\b0 prototype which gives the type of the function and the type of each parameter before you define the function. For example, a prototype for the sum function would be: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int sum(int,int); }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 meaning sum is an int function which takes two int parameters. Obviously, if you are in the habit of declaring functions then this is a small modification. The only other major change is that}
\par {\loch\f1\fs16\lang1033\i0\b0 you can declare parameter types along with the function as in: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int sum(int a, int b);}
\par {\loch\f1\fs16\lang1033\i0\b0 \{}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 rather than: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int sum(a,b)}
\par {\loch\f1\fs16\lang1033\i0\b0 int a,b;}
\par {\loch\f1\fs16\lang1033\i0\b0 \{}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 was used in the original K&R C. Again, you can see that this is just a small change. Notice that even if you are using an ANSI compiler you don't have to use prototypes and the K&R}
\par {\loch\f1\fs16\lang1033\i0\b0 version of the code will work perfectly well. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The Standard Library Functions:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Some of the "commands" in C are not really "commands" at all but are functions. For example, we have been using printf and scanf to do input and output, and we have used rand to}
\par {\loch\f1\fs16\lang1033\i0\b0 generate random numbers - all three are functions. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 There are a great many standard functions that are included with C compilers and while these are not really part of the language, in the sense that you can re-write them if you really want to,}
\par {\loch\f1\fs16\lang1033\i0\b0 most C programmers think of them as fixtures and fitings. Later in the course we will look into the mysteries of how C gains access to these standard functions and how we can extend the}
\par {\loch\f1\fs16\lang1033\i0\b0 range of the standard library. But for now a list of the most common libraries and a brief description of the most useful functions they contain follows: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0      stdio.h: I/O functions: }
\par {\loch\f1\fs16\lang1033\i0\b0           getchar() returns the next character typed on the keyboard. }
\par {\loch\f1\fs16\lang1033\i0\b0           putchar() outputs a single character to the screen. }
\par {\loch\f1\fs16\lang1033\i0\b0           printf() as previously described }
\par {\loch\f1\fs16\lang1033\i0\b0           scanf() as previously described }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0      string.h: String functions }
\par {\loch\f1\fs16\lang1033\i0\b0           strcat() concatenates a copy of str2 to str1 }
\par {\loch\f1\fs16\lang1033\i0\b0           strcmp() compares two strings }
\par {\loch\f1\fs16\lang1033\i0\b0           strcpy() copys contents of str2 to str1 }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0      ctype.h: Character functions }
\par {\loch\f1\fs16\lang1033\i0\b0           isdigit() returns non-0 if arg is digit 0 to 9 }
\par {\loch\f1\fs16\lang1033\i0\b0           isalpha() returns non-0 if arg is a letter of the alphabet }
\par {\loch\f1\fs16\lang1033\i0\b0           isalnum() returns non-0 if arg is a letter or digit }
\par {\loch\f1\fs16\lang1033\i0\b0           islower() returns non-0 if arg is lowercase letter }
\par {\loch\f1\fs16\lang1033\i0\b0           isupper() returns non-0 if arg is uppercase letter }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0      math.h: Mathematics functions }
\par {\loch\f1\fs16\lang1033\i0\b0           acos() returns arc cosine of arg }
\par {\loch\f1\fs16\lang1033\i0\b0           asin() returns arc sine of arg }
\par {\loch\f1\fs16\lang1033\i0\b0           atan() returns arc tangent of arg }
\par {\loch\f1\fs16\lang1033\i0\b0           cos() returns cosine of arg }
\par {\loch\f1\fs16\lang1033\i0\b0           exp() returns natural logarithim e }
\par {\loch\f1\fs16\lang1033\i0\b0           fabs() returns absolute value of num }
\par {\loch\f1\fs16\lang1033\i0\b0           sqrt() returns square root of num }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0      time.h: Time and Date functions }
\par {\loch\f1\fs16\lang1033\i0\b0           time() returns current calender time of system }
\par {\loch\f1\fs16\lang1033\i0\b0           difftime() returns difference in secs between two times }
\par {\loch\f1\fs16\lang1033\i0\b0           clock() returns number of system clock cycles since program execution }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0      stdlib.h:Miscellaneous functions }
\par {\loch\f1\fs16\lang1033\i0\b0           malloc() provides dynamic memory allocation, covered in future sections }
\par {\loch\f1\fs16\lang1033\i0\b0           rand() as already described previously }
\par {\loch\f1\fs16\lang1033\i0\b0           srand() used to set the starting point for rand() }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Throwing The Dice:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 As an example of how to use functions, we conclude this section with a program that, while it isn't state of the art, does show that there are things you can already do with C. It also has to be}
\par {\loch\f1\fs16\lang1033\i0\b0 said that some parts of the program can be written more neatly with just a little more C - but that's for later. All the program does is to generate a random number in the range 1 to 6 and}
\par {\loch\f1\fs16\lang1033\i0\b0 displays a dice face with the appropriate pattern. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The main program isn't difficult to write because we are going to adopt the traditional programmer's trick of assuming that any function needed already exists. This approach is called}
\par {\loch\f1\fs16\lang1033\i0\b0 stepwise refinement, and although its value as a programming method isn't clear cut, it still isn't a bad way of organising things: }
\par 
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 main()}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0  \{}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0    int r;}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0    char ans;}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0    ans = getans();}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1036\i0\b0{\lang1036    }}{\loch\f1\fs16\lang1033while(ans== 'y')}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0     \{}
\par {\loch\f1\fs16\lang1033\i0\b0       r = randn(6);}
\par {\loch\f1\fs16\lang1033\i0\b0       blines(25);}
\par {\loch\f1\fs16\lang1033\i0\b0       if (r==1) showone();}
\par {\loch\f1\fs16\lang1033\i0\b0       if (r==2) showtwo();}
\par {\loch\f1\fs16\lang1033\i0\b0       if (r==3) showthree();}
\par {\loch\f1\fs16\lang1033\i0\b0       if (r==4) showfour();}
\par {\loch\f1\fs16\lang1033\i0\b0       if (r==5) showfive();}
\par {\loch\f1\fs16\lang1033\i0\b0       if (r==6) showsix();}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0       {\lang1036 blines(21);}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0       ans = getans();}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1036\i0\b0{\lang1036     }}{\loch\f1\fs16\lang1033\}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0    blines(2);}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 If you look at main() you might be a bit mystified at first. It is clear that the list of if statements pick out one of the functions showone, showtwo etc. and so these must do the actual}
\par {\loch\f1\fs16\lang1033\i0\b0 printing of the dot patterns - but what is blines, what is getans and why are we using randn()? The last time we used a random number generator it was called rand()! }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The simple answers are that blines(n) will print n blank lines, getans() asks the user a question and waits for the single letter answer, and randn(n) is a new random number generator}
\par {\loch\f1\fs16\lang1033\i0\b0 function that produces a random integer in the range 1 to n - but to know this you would have written the main program. We decided what functions would make our task easier and named}
\par {\loch\f1\fs16\lang1033\i0\b0 them. The next step is to write the code to fill in the details of each of the functions. There is nothing to stop me assuming that other functions that would make my job easier already exist.}
\par {\loch\f1\fs16\lang1033\i0\b0 This is the main principle of stepwise refinement - never write any code if you can possibly invent another function! Let's start with randn(). }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This is obviously an int function and it can make use of the existing rand() function in the standard library }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int randn(int n)}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0    return rand()%n + 1;}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The single line of the body of the function just returns the remainder of the random number after dividing by n - % is the remainder operator - plus 1. An alternative would be to use a}
\par {\loch\f1\fs16\lang1033\i0\b0 temporary variable to store the result and then return this value. You can also use functions within the body of other functions. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Next getans() }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 char getans()}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0  {\lang1036 \{}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0    int ans;}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0    printf("Throw y/n ?");}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0    ans = -1;}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0    while (ans == -1)}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1036\i0\b0{\lang1036     }}{\loch\f1\fs16\lang1033\{}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0       ans=getchar();}
\par {\loch\f1\fs16\lang1033\i0\b0     \}}
\par {\loch\f1\fs16\lang1033\i0\b0    return ans;}
\par {\loch\f1\fs16\lang1033\i0\b0 \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This uses the standard int function getchar() which reads the next character from the keyboard and returns its ASCII code or -1 if there isn't a key pressed. This function tends to vary in}
\par {\loch\f1\fs16\lang1033\i0\b0 its behaviour according to the implementation you are using. Often it needs a carriage return pressed before it will return anything - so if you are using a different compiler and the program}
\par {\loch\f1\fs16\lang1033\i0\b0 just hangs, try pressing "y" followed the by Enter or Return key. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The blines(n) function simply has to use a for loop to print the specified number of lines: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  void blines(int n)}
\par {\loch\f1\fs16\lang1033\i0\b0   \{}
\par {\loch\f1\fs16\lang1033\i0\b0     int i;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     for(i=1 ; i<=n ; i++) printf("\\n");}
\par {\loch\f1\fs16\lang1033\i0\b0   \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Last but not least are the functions to print the dot patterns. These are just boring uses of printf to show different patterns. Each function prints exactly three lines of dots and uses blank}
\par {\loch\f1\fs16\lang1033\i0\b0 lines if necessary. The reason for this is that printing 25 blank lines should clear a standard text screen and after printing three lines printing 21 blank lines will scroll the pattern to the top of}
\par {\loch\f1\fs16\lang1033\i0\b0 the screen. If this doesn't happen on your machine make sure you are using a 29 line text mode display. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  void showone()}
\par {\loch\f1\fs16\lang1033\i0\b0   \{}
\par {\loch\f1\fs16\lang1033\i0\b0     printf("\\n * \\n");}
\par {\loch\f1\fs16\lang1033\i0\b0   \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  void showtwo()}
\par {\loch\f1\fs16\lang1033\i0\b0   \{}
\par {\loch\f1\fs16\lang1033\i0\b0     printf(" * \\n\\n");}
\par {\loch\f1\fs16\lang1033\i0\b0     printf(" * \\n");}
\par {\loch\f1\fs16\lang1033\i0\b0   \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  void showthree()}
\par {\loch\f1\fs16\lang1033\i0\b0   \{}
\par {\loch\f1\fs16\lang1033\i0\b0     printf(" *  \\n");}
\par {\loch\f1\fs16\lang1033\i0\b0     printf("  * \\n");}
\par {\loch\f1\fs16\lang1033\i0\b0     printf("   *\\n");}
\par {\loch\f1\fs16\lang1033\i0\b0   \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  void showfour()}
\par {\loch\f1\fs16\lang1033\i0\b0   \{}
\par {\loch\f1\fs16\lang1033\i0\b0     printf(" * * \\n\\n");}
\par {\loch\f1\fs16\lang1033\i0\b0     printf(" * * \\n");}
\par {\loch\f1\fs16\lang1033\i0\b0   \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  void showfive()}
\par {\loch\f1\fs16\lang1033\i0\b0   \{}
\par {\loch\f1\fs16\lang1033\i0\b0     printf(" * * \\n");}
\par {\loch\f1\fs16\lang1033\i0\b0     printf("  *  \\n");}
\par {\loch\f1\fs16\lang1033\i0\b0     printf(" * * \\n");}
\par {\loch\f1\fs16\lang1033\i0\b0   \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  void showsix()}
\par {\loch\f1\fs16\lang1033\i0\b0   \{}
\par {\loch\f1\fs16\lang1033\i0\b0     int i;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     for(i=1 ; i>=3 ; i++) printf(" * * \\n");}
\par {\loch\f1\fs16\lang1033\i0\b0   \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The only excitment in all of this is the use of a for loop in showsix! Type this all in and add: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  void showone();}
\par {\loch\f1\fs16\lang1033\i0\b0  void showtwo();}
\par {\loch\f1\fs16\lang1033\i0\b0  void showthree();}
\par {\loch\f1\fs16\lang1033\i0\b0  void showfour();}
\par {\loch\f1\fs16\lang1033\i0\b0  void showfive();}
\par {\loch\f1\fs16\lang1033\i0\b0  void showsix();}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0  {\lang1036 int randn();}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0  char getans();}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1036\i0\b0{\lang1036  }}{\loch\f1\fs16\lang1033void blines();}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 before the main function if you type the other functions in after. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Once you have the program working try modifying it. For example, see if you can improve the look of the pattems. You might also see if you can reduce the number of showx functions in}
\par {\loch\f1\fs16\lang1033\i0\b0 use - the key is that the patterns are built up of combinations of two honzontal dots and one centered dot. Best of luck.}
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic68}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Data Types - Part II}}}}
}}{\loch\f1\fs16\lang1033{\fs28 Data Types Part II }}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Objectives:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 So far we have looked at local variable now we switch our attension to other types of variables supported by the C programming language: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    1.Global Variables }
\par {\loch\f1\fs16\lang1033\i0\b0    2.Constant Data Types }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Global variables:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Variables can be declared as either local variables which can be used inside the function it has been declared in (more on this in further sections) and global variables which are known}
\par {\loch\f1\fs16\lang1033\i0\b0 throughout the entire program. Global variables are created by declaring them outside any function. For example:}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  int max;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  main()}
\par {\loch\f1\fs16\lang1033\i0\b0   \{}
\par {\loch\f1\fs16\lang1033\i0\b0     .....}
\par {\loch\f1\fs16\lang1033\i0\b0   \}}
\par {\loch\f1\fs16\lang1033\i0\b0  f1()}
\par {\loch\f1\fs16\lang1033\i0\b0   \{}
\par {\loch\f1\fs16\lang1033\i0\b0     .....}
\par {\loch\f1\fs16\lang1033\i0\b0   \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The int max can be used in both main and function f1 and any changes made to it will remain consistent for both functions.The understanding of this will become clearer when you have}
\par {\loch\f1\fs16\lang1033\i0\b0 studied the section on functions but I felt I couldn't complete a section on data types without mentioning global and local variables. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Constant Data Types:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Constants refer to fixed values that may not be altered by the program. All the data types we have previously covered can be defined as constant data types if we so wish to do so. The}
\par {\loch\f1\fs16\lang1033\i0\b0 constant data types must be defined before the main function. The format is as follows: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #define CONSTANTNAME value }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 for example: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #define SALESTAX 0.05 }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The constant name is normally written in capitals and does not have a semi-colon at the end. The use of constants is mainly for making your programs easier to be understood and modified}
\par {\loch\f1\fs16\lang1033\i0\b0 by others and yourself in the future. An example program now follows: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #define SALESTAX 0.05}
\par {\loch\f1\fs16\lang1033\i0\b0 #include <stdio.h>}
\par {\loch\f1\fs16\lang1033\i0\b0 main()}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0    float amount, taxes, total;}
\par {\loch\f1\fs16\lang1033\i0\b0    printf("Enter the amount purchased : ");}
\par {\loch\f1\fs16\lang1033\i0\b0    scanf("%f",&amount);}
\par {\loch\f1\fs16\lang1033\i0\b0    taxes = SALESTAX*amount;}
\par {\loch\f1\fs16\lang1033\i0\b0    printf("The sales tax is \'a3%4.2f",taxes);}
\par {\loch\f1\fs16\lang1033\i0\b0    printf("\\n The total bill is \'a3%5.2f",total);}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The float constant SALESTAX is defined with value 0.05. Three float variables are declared amount, taxes and total. Display message to the screen is archieved using printf and user}
\par {\loch\f1\fs16\lang1033\i0\b0 input handled by scanf. Calculation is then performed and results sent to the screen. If the value of SALESTAX alters in the future it is very easy to change the value where it is defined rather}
\par {\loch\f1\fs16\lang1033\i0\b0 than go through the whole program changing the indivual values separately, which would be very time consuming in a large program with several references. The program is also improved}
\par {\loch\f1\fs16\lang1033\i0\b0 when using constants rather than values as it improves the clarity.}
\par 
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic69}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Arrays}}}}
}}{\loch\f1\fs16\lang1033{\fs28 Arrays}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Objectives:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Having read this section you should have a good understanding of the use of arrays in C. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Advanced Data Types:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Programming in any language takes a quite significant leap forwards as soon as you learn about more advanced data types - arrays and strings of characters. In C there is also a third}
\par {\loch\f1\fs16\lang1033\i0\b0 more general and even more powerful advanced data type - the pointer but more about that later. In this section we introduce the array, but the first question is, why bother? }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 There are times when we need to store a complete list of numbers or other data items. You could do this by creating as many individual variables as would be needed for the job, but this is}
\par {\loch\f1\fs16\lang1033\i0\b0 a hard and tedious process. For example, suppose you want to read in five numbers and print them out in reverse order. You could do it the hard way as: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 main()}
\par {\loch\f1\fs16\lang1033\i0\b0 \{}
\par {\loch\f1\fs16\lang1033\i0\b0  int al,a2,a3,a4,a5;}
\par {\loch\f1\fs16\lang1033\i0\b0  scanf("%d %d %d %d %d",&a1,&a2,&a3,&a4,&a5);}
\par {\loch\f1\fs16\lang1033\i0\b0  printf("%d %d %d %d %d'',a5,a4,a3,a2,a1);}
\par {\loch\f1\fs16\lang1033\i0\b0 \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Doesn't look very pretty does it, and what if the problem was to read in 100 or more values and print them in reverse order? Of course the clue to the solution is the use of the regular}
\par {\loch\f1\fs16\lang1033\i0\b0 variable names a1, a2 and so on. What we would really like to do is to use a name like a[i] where i is a variable which specifies which particular value we are working with. This is the}
\par {\loch\f1\fs16\lang1033\i0\b0 basic idea of an array and nearly all programming languages provide this sort of facility - only the details alter. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 In the case of C you have to declare an array before you use it - in the same way you have to declare any sort of variable. For example, }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int a[5]; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 declares an array called a with five elements. Just to confuse matters a little the first element is a[0] and the last a[4]. C programmer's always start counting at zero! Languages vary}
\par {\loch\f1\fs16\lang1033\i0\b0 according to where they start numbering arrays. Less technical, i.e. simpler, languages start counting from 1 and more technical ones usually start counting from 0. Anyway, in the case of C}
\par {\loch\f1\fs16\lang1033\i0\b0 you have to remember that }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 type array[size] }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 declares an array of the specified type and with size elements. The first array element is array[0] and the last is array[size-1]. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Using an array, the problem of reading in and printing out a set of values in reverse order becomes simple: }
\par 
\par               
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  main()}
\par {\loch\f1\fs16\lang1033\i0\b0   \{}
\par {\loch\f1\fs16\lang1033\i0\b0    int a[5];}
\par {\loch\f1\fs16\lang1033\i0\b0    int i;}
\par {\loch\f1\fs16\lang1033\i0\b0    for(i =0;i < 5; ++i) scanf("%d",&a[i]);}
\par {\loch\f1\fs16\lang1033\i0\b0    for(i =4;i> =0;--i) printf("%d",a[i]);}
\par {\loch\f1\fs16\lang1033\i0\b0   \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Well we said simple but I have to admit that the pair of for loops looks a bit intimidating. The for loop and the array data type were more or less made for each other. The for loop can be}
\par {\loch\f1\fs16\lang1033\i0\b0 used to generate a sequence of values to pick out and process each element in an array in turn. Once you start using arrays, for loops like: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 for (i=0 ; i<5 ; ++i) }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 to generate values in the order 0,1,2 and so forth, and }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 for(i=4;i>=0;--i) }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 to generate values in the order 4,3,2... become very familiar. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 In Dis-array:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 An array of character variables is in no way different from an array of numeric variables, but programmers often like to think about them in a different way. For example, if you want to read}
\par {\loch\f1\fs16\lang1033\i0\b0 in and reverse five characters you could use: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  main()}
\par {\loch\f1\fs16\lang1033\i0\b0   \{}
\par {\loch\f1\fs16\lang1033\i0\b0    char a[5];}
\par {\loch\f1\fs16\lang1033\i0\b0    int i;}
\par {\loch\f1\fs16\lang1033\i0\b0    for(i=0; i<5; ++i) scanf("%c",&a[i]);}
\par {\loch\f1\fs16\lang1033\i0\b0    for(i=4;i>=0;--i) printf("%c",a[i]);}
\par {\loch\f1\fs16\lang1033\i0\b0   \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Notice that the only difference, is the declared type of the array and the %c used to specify that the data is to be interpreted as a character in scanf and printf. The trouble with character}
\par {\loch\f1\fs16\lang1033\i0\b0 arrays is that to use them as if they were text strings you have to remember how many characters they hold. In other words, if you declare a character array 40 elements long and store H E L}
\par {\loch\f1\fs16\lang1033\i0\b0 L O in it you need to remember that after element 4 the array is empty. This is such a nuisance that C uses the simple convention that the end of a string of characters is marked by a null}
\par {\loch\f1\fs16\lang1033\i0\b0 character. A null character is, as you might expect, the character with ASCII code 0. If you want to store the null character in a character variable you can use the notation \\0 - but most}
\par {\loch\f1\fs16\lang1033\i0\b0 of the time you don't have to actually use the null character. The reason is that C will automatically add a null character and store each character in a separate element when you use a}
\par {\loch\f1\fs16\lang1033\i0\b0 string constant. A string constant is indicated by double quotes as opposed to a character constant which is indicated by a single quote. For example: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 "A" }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 is a string constant, but }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 'A' }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 is a character constant. The difference between these two superficially similar types of text is confusing at first and the source of many errors. All you have to remember is that &QUOTA"}
\par {\loch\f1\fs16\lang1033\i0\b0 consists of two characters, the letter A followed by \\0 whereas 'A' is just the single character A. If you are familiar with other languages you might think that you could assign string constants}
\par {\loch\f1\fs16\lang1033\i0\b0 to character arrays and work as if a string was a built-in data type. In C however the fundamental data type is the array and strings are very much grafted on. For example, if you try}
\par {\loch\f1\fs16\lang1033\i0\b0 something like: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 char name[40];}
\par {\loch\f1\fs16\lang1033\i0\b0 name="Hello"}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 it will not work. However, you can print strings using printf and read them into character arrays using scanf. For example, }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  main()}
\par {\loch\f1\fs16\lang1033\i0\b0   \{}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     static char name[40] ="hello";}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0     printf("%s",name);}
\par {\loch\f1\fs16\lang1033\i0\b0     scanf("%s",name);}
\par {\loch\f1\fs16\lang1033\i0\b0     printf("%s",name);}
\par {\loch\f1\fs16\lang1033\i0\b0    \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This program reads in the text that you type, terminating it with a null and stores it in the character array name. It then prints the character array treating it as a string, i.e. stopping when it hits}
\par {\loch\f1\fs16\lang1033\i0\b0 the first null string. Notice the use of the "%s" format descriptor in scanf and printf to specify that what is being printed is a string. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 At this point the way that strings work and how they can be made a bit more useful and natural depends on understanding pointers which is covered in the next section.}
\par 
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic70}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Pointers}}}}
}}{\loch\f1\fs16\lang1033{\fs28 Pointers}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Objectives:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Having read this section you should be able to: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    1.program using pointers }
\par {\loch\f1\fs16\lang1033\i0\b0    2.understand how C uses pointers with arrays }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Point to Point:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Pointers are a very powerful, but primitive facility contained in the C language. Pointers are a throwback to the days of low-level assembly language programming and as a result they are}
\par {\loch\f1\fs16\lang1033\i0\b0 sometimes difficult to understand and subject to subtle and difficult-to-find errors. Still it has to be admitted that pointers are one of the great attractions of the C language and there will be}
\par {\loch\f1\fs16\lang1033\i0\b0 many an experienced C programmer splutering and fuming at the idea that we would dare to refer to pointers as 'primitive'! }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 In an ideal world we would avoid telling you about pointers until the very last minute, but without them many of the simpler aspects of C just don't make any sense at all. So, with apologies,}
\par {\loch\f1\fs16\lang1033\i0\b0 let's get on with pointers. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 A variable is an area of memory that has been given a name. For example: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int x; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 is an area of memory that has been given the name x. The advantage of this scheme is that you can use the name to specify where to store data. For example: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 x=lO; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 is an instruction to store the data value 10 in the area of memory named x. The variable is such a fundamental idea that using it quickly becomes second nature, but there is another way of}
\par {\loch\f1\fs16\lang1033\i0\b0 working with memory. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The computer access its own memory not by using variable names but by using a memory map with each location of memory uniquely defined by a number, called the address of that}
\par {\loch\f1\fs16\lang1033\i0\b0 memory location. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 A pointer is a variable that stores this location of memory. In more fundamental terms, a pointer stores the address of a variable . In more picturesque terms, a pointer points to a variable. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 A pointer has to be declared just like any other variable - remember a pointer is just a variable that stores an address. For example, }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int *p; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 is a pointer to an integer. Adding an asterisk in front of a variable's name declares it to be a pointer to the declared type. Notice that the asterisk applies only to the single variable name that it}
\par {\loch\f1\fs16\lang1033\i0\b0 is in front of, so: }
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 int *p , q; }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 declares a pointer to an int and an int variable, not two pointers. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Once you have declared a pointer variable you can begin using it like any other variable, but in practice you also need to know the meaning of two new operators: & and *. The & operator}
\par {\loch\f1\fs16\lang1033\i0\b0 returns the address of a variable. You can remember this easily because & is the 'A'mpersand character and it gets you the 'A'ddress. For example: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int *p , q; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 declares p, a pointer to int, and q an int and the instruction: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 p=&q; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 stores the address of q in p. After this instruction you can think of p as pointing at q. Compare this to: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 p=q; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 which attempts to store the value in q in the pointer p - something which has to be considered an error. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The second operator * is a little more difficult to understand. If you place * in front of a pointer variable then the result is the value stored in the variable pointed at. That is, p stores the}
\par {\loch\f1\fs16\lang1033\i0\b0 address, or pointer, to another variable and *p is the value stored in the variable that p points at. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The * operator is called the dereferencing operator and it helps not to confuse it with multiplication or with its use in declaring a pointer. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This multiple use of an operator is called operator overload. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Confused? Well most C programmers are confused when they first meet pointers. There seems to be just too much to take in on first acquaintance. However there are only three basic ideas:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    1.To declare a pointer add an * in front of its name. }
\par {\loch\f1\fs16\lang1033\i0\b0    2.To obtain the address of a variable us & in front of its name. }
\par {\loch\f1\fs16\lang1033\i0\b0    3.To obtain the value of a variable use * in front of a pointer's name. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Now see if you can work out what the following means: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int *a , b , c;}
\par {\loch\f1\fs16\lang1033\i0\b0 b = 10;}
\par {\loch\f1\fs16\lang1033\i0\b0 a = &b;}
\par {\loch\f1\fs16\lang1033\i0\b0 c = *a;}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Firstly three variables are declared - a (a pointer to int), and b and c (both standard integers). The instruction stores the value l0 in the varable b in the usual way. The first 'difficult'}
\par {\loch\f1\fs16\lang1033\i0\b0 instruction is a=&b which stores the address of b in a. After this a points to b. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Finally c = *a stores the value in the varable pointed to by a in c. As a points to b, its value i.e. 1O is stored in c. In other words, this is a long winded way of writing }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 c = b; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Notice that if a is an int and p is a pointer to an int then }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 a = p; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 is nonsense because it tries to store the address of an int, i.e. a pointer value, in an int. Similarly: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 a = &p; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 tries to store the address of a pointer variable in a and is equally wrong! The only assignment between an int and a pointer to int that makes sense is: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 a = *p; }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Swap Shop:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 At the moment it looks as if pointers are just a complicated way of doing something we can already do by a simpler method. However, consider the following simple problem - write a}
\par {\loch\f1\fs16\lang1033\i0\b0 function which swaps the contents of two variables. That is, write swap(a,b) which will swaps over the contents of a and b. In principle this should be easy: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 function swap(int a , int b);}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0   int temp;}
\par {\loch\f1\fs16\lang1033\i0\b0   temp = a;}
\par {\loch\f1\fs16\lang1033\i0\b0   a    = b;}
\par {\loch\f1\fs16\lang1033\i0\b0   b    = temp;}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 the only complication being the need to use a third variable temp to hold the value of a while the value of b overwrites it. However, if you try this function you will find that it doesn't work.}
\par {\loch\f1\fs16\lang1033\i0\b0 You can use it - swap(a,b); - until you are blue in the face, but it just will not change the values stored in a and b back in the calling program. The reason is that all parameters in C are}
\par {\loch\f1\fs16\lang1033\i0\b0 passed by value. That is, when you use swap(a,b) function the values in a and b are passed into the function swap via the parameters and any changes that are made to the parameters do}
\par {\loch\f1\fs16\lang1033\i0\b0 not alter a and b back in the main program. The function swap does swap over the values in a and b within the function, but doesn't do so in the main program. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The solution to this very common problem is to pass not the values stored in the variables, but the addresses of the variables. The function can then use pointers to get at the values in the}
\par {\loch\f1\fs16\lang1033\i0\b0 variables in the main program and modify them. That is, the function should be: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  function swap(int *a , int *b);}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0   int temp;}
\par {\loch\f1\fs16\lang1033\i0\b0   temp = *a;}
\par {\loch\f1\fs16\lang1033\i0\b0   *a   = *b;}
\par {\loch\f1\fs16\lang1033\i0\b0   *b   = temp;}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par 
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Notice that now the two parameters a and b are pointers and the assignments that effect the swap have to use the dereference operator to make sure that it is the values of the variables}
\par {\loch\f1\fs16\lang1033\i0\b0 pointed at that are swapped. You should have no difficulty with: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 temp = *a; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 this just stores the value pointed at by a into temp. However, }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 *a = *b; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 is a little more unusual in that it stores that value pointed at by b in place of the value pointed at by a. There is one final complication. When you use swap you have to remember to pass the}
\par {\loch\f1\fs16\lang1033\i0\b0 addresses of the variables that you want to swap. That is not: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 swap(a,b) }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 but }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 swap(&a,&b) }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The rule is that whenever you want to pass a variable so that the function can modify its contents you have to pass it as an address. Equally the function has to be ready to accept an address}
\par {\loch\f1\fs16\lang1033\i0\b0 and work with it. You can't take any old function and suddenly decide to pass it the address of a variable instead of its value. If you pass an address to a function that isn't expecting it the}
\par {\loch\f1\fs16\lang1033\i0\b0 result is usually disaster and the same is true if you fail to pass an address to a function that is expecting one. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 For example, calling swap as swap(a,b) instead of swap(&a,&b) will result in two arbitrary areas of memory being swapped over, usually with the result that the entire system, not just}
\par {\loch\f1\fs16\lang1033\i0\b0 your program, crashes. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The need to pass an address to a function also explains the difference between the two I/O functions that we have been using since the beginning of this course. printf doesn't change the}
\par {\loch\f1\fs16\lang1033\i0\b0 values of its parameters so it is called as printf("%d",a) but scanf does, because it is an input function, and so it is called as scanf("%d",&a). }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Pointers And Arrays:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 In C there is a very close connection between pointers and arrays. In fact they are more or less one and the same thing! When you declare an array as: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int a[10]; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 you are in fact declaring a pointer a to the first element in the array. That is, a is exactly the same as &a[0]. The only difference between a and a pointer variable is that the array name is a}
\par {\loch\f1\fs16\lang1033\i0\b0 constant pointer - you cannot change the location it points at. When you write an expression such as a[i] this is converted into a pointer expression that gives the value of the appropriate}
\par {\loch\f1\fs16\lang1033\i0\b0 element. To be more precise, a[i] is exactly equivalent to *(a+i) i.e. the value pointed at by a + i . In the same way *(a+ 1) is the same as a[1] and so on. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Being able to add one to a pointer to get the next element of an array is a nice idea, but it does raise the question of what it means to add 'one' to a pointer. For example, in most}
\par {\loch\f1\fs16\lang1033\i0\b0 implementations an int takes two memory locations and a float takes four. So if you declare an int array and add one to a pointer to it, then in fact the pointer will move on by two}
\par {\loch\f1\fs16\lang1033\i0\b0 memory locations. However, if you declare a float array and add one to a pointer to it then the pointer has to move on by four memory locations. In other words, adding one to a pointer}
\par {\loch\f1\fs16\lang1033\i0\b0 moves it on by an amount of storage depending on the type it is a pointer to. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This is, of course, precisely why you have to declare the type that the pointer is to point at! Only by knowing that a is a pointer to int and b is a pointer to float can the compiler figure out}
\par {\loch\f1\fs16\lang1033\i0\b0 that }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 a + 1 }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 means move the pointer on by two memory locations i.e. add 2, and }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 b + 1 }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 means move the pointer on by four memory locations i.e. add 4. In practice you don't have to worry about how much storage a pointer's base type takes up. All you do need to remember is}
\par {\loch\f1\fs16\lang1033\i0\b0 that pointer arithmetic works in units of the data type that the pointer points at. Notice that you can even use ++ and -- with a pointer, but not with an array name because this is a constant}
\par {\loch\f1\fs16\lang1033\i0\b0 pointer and cannot be changed. So to summarise: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    1.An array's name is a constant pointer to the first element in the array that is a==&a[0] and *a==a[0]. }
\par {\loch\f1\fs16\lang1033\i0\b0    2.Array indexing is equivalent to pointer arithmetic - that is a+i=&a[i] and *(a+i)==a[i]. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 It is up to you whether you want to think about an array as an array or an area of storage associated with a constant pointer. The view of it as an array is the more sophisticated and the}
\par {\loch\f1\fs16\lang1033\i0\b0 further away from the underlying way that the machine works. The view as a pointer and pointer arithmetic is more primitive and closer to the hardware. In most cases the distinction is}
\par {\loch\f1\fs16\lang1033\i0\b0 irrelevant and purely a matter of taste. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 One final point connected with both arrays and functions is that when you pass an entire array to a function then by default you pass a pointer. This allows you to write functions that}
\par {\loch\f1\fs16\lang1033\i0\b0 process entire arrays without having to pass every single value stored in the array - just a pointer to the first element. However, it also temps you to write some very strange code unless you}
\par {\loch\f1\fs16\lang1033\i0\b0 keep a clear head. Try the following - write a function that will fill an array with random values randdat(a,n) where a is the array and n is its size. Your first attempt might be something}
\par {\loch\f1\fs16\lang1033\i0\b0 like: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  void randdat(int *pa , int n)}
\par {\loch\f1\fs16\lang1033\i0\b0   \{}
\par {\loch\f1\fs16\lang1033\i0\b0    for (pa = 0 ; pa < n ; pa++ ) *pa = rand()%n + 1;}
\par {\loch\f1\fs16\lang1033\i0\b0   \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Well I hope your first attempt wouldn't be like this because it is wrong on a number of counts! The problem is that the idea of a pointer and the idea of an index have been confused. The}
\par {\loch\f1\fs16\lang1033\i0\b0 pointer pa is supposed to point to the first element of the array, but the for loop sets it to zero and then increments it though a series of memory locations nowhere near the array. A lesser}
\par {\loch\f1\fs16\lang1033\i0\b0 error is to suppose that n-1 is the correct final value of the array pointer! As before, you will be lucky if this program doesn't crash the system, let alone itself! The correct way of doing the}
\par {\loch\f1\fs16\lang1033\i0\b0 job is to use a for loop to step from 0 to n-1, but to use pointer arithmetic to access the correct array element: }
\par 
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 int randdat(int *pa , int n)}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 \{}
\par {\loch\f1\fs16\lang1033\i0\b0   int i;}
\par {\loch\f1\fs16\lang1033\i0\b0   for ( i=0 ; i< n ; ++i)}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0    {\lang1036 \{}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0      *pa = rand()%n + 1;}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0      ++pa;}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1036\i0\b0{\lang1036    }}{\loch\f1\fs16\lang1033\}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Notice the way that the for loop looks just like the standard way of stepping through an array. If you want to make it look even more like indexing an array using a for loop you could}
\par {\loch\f1\fs16\lang1033\i0\b0 write: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 for(i=0 ; i<n ; ++i) *(pa+i)=rand()%n+1; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 or even: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 for(i=0 ; i<n ; ++i) pa[i]=rand()%n+1; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 In otherwords, as long as you define pa as a pointer you can use array indexing notation with it and it looks as if you have actually passed an array. You can even declare a pointer variable}
\par {\loch\f1\fs16\lang1033\i0\b0 using the notation: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int pa[]; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 that is, as an array with no size information. In this way the illusion of passing an array to a function is complete.}
\par 
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic71}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Strings}}}}
}}{\loch\f1\fs16\lang1033{\fs28 Objectives}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This section brings together the use of two of C's fundamental data types, ponters and arrays, in the use of handling strings. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Having read this section you should be able to: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    1.handle any string constant by storing it in an array. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Stringing Along:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Now that we have mastered pointers and the relationship between arrays and pointers we can take a second look at strings. A string is just a character array with the convention that the}
\par {\loch\f1\fs16\lang1033\i0\b0 end of the valid data is marked by a null '\\0'. Now you should be able to see why you can read in a character string using scanf("%s", name) rather than scanf("%s",&name) - name is}
\par {\loch\f1\fs16\lang1033\i0\b0 already a pointer variable. Manipulating strings is very much a matter of pointers and special string functions. For example, the strlen(str) function returns the number of characters in the}
\par {\loch\f1\fs16\lang1033\i0\b0 string str. It does this simply by counting the number of characters up to the first null in the character array - so it is important that you are using a valid null-terminated string. Indeed this is}
\par {\loch\f1\fs16\lang1033\i0\b0 important with all of the C string functions. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 You might not think that you need a function to copy strings, but simple assignment between string variables doesn't work. For example: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 char a[l0],b[10];}
\par {\loch\f1\fs16\lang1033\i0\b0 b = a;}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 does not appear to make a copy of the characters in a, but this is an illusion. What actually happens is that the pointer b is set to point to the same set of characters that a points to, i.e. a}
\par {\loch\f1\fs16\lang1033\i0\b0 second copy of the string isn't created. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 To do this you need strcopy(a,b) which really does make a copy of every character in a in the array b up to the first null character. In a similar fashion strcat(a,b) adds the characters}
\par {\loch\f1\fs16\lang1033\i0\b0 in b to the end of the string stored in a. Finally there is the all-important strcmp(a,b) which compares the two strings character by character and returns true - that is 0 - if the results are}
\par {\loch\f1\fs16\lang1033\i0\b0 equal. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Again notice that you can't compare strings using a==b because this just tests to see if the two pointers a and b are pointing to the same memory location. Of course if they are then the two}
\par {\loch\f1\fs16\lang1033\i0\b0 strings are the same, but it is still possible for two strings to be the same even if they are stored at different locations. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 You can see that you need to understand pointers to avoid making simple mistakes using strings. One last problem is how to initialise a character array to a string. You can't use: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 a = "hello"; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 because a is a pointer and "hello" is a string constant. However, you can use: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 strcopy(a,"hello") }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 because a string constant is passed in exactly the same way as a string variable, i.e. as a pointer. If you are worried where the string constant is stored, the answer is in a special area of}
\par {\loch\f1\fs16\lang1033\i0\b0 memory along with all of the constants that the program uses. The main disadvantage of this method is that many compilers use an optimisation trick that results in only a single version of}
\par {\loch\f1\fs16\lang1033\i0\b0 identical constants being stored. For example: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 strcopy(b,"hello"); }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 usually ends up with b pointing to the same string as a. In other words, this method isn't particularly safe! }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 A much better method is to use array initialisation. You can specify constants to be used to initialise any variable when it is declared. For example: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int a=10; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 declares a to be an integer and initialises it to 10. You can initialise an array using a similar notation. For example: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int a[5] = \{1,2,3,4,5\}; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 declares an integer array and initialises it so that a[0]= 1, a[1] = 2 and so on. A character array can be initialised in the same way. For example: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 char a[5]=\{'h','e','l','l','o'\}; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 but a much better way is to write: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 char a[6]="hello"; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 which also automatically stores a null character at the end of the string - hence a[6] and not a[5]. If you really want to be lazy you can use: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 char a[] = "hello"; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 and let the compiler work out how many array elements are needed. Some compilers cannot cope with the idea of initialising a variable that doesn't exist for the entire life of the program. For}
\par {\loch\f1\fs16\lang1033\i0\b0 those compilers to make initialisation work you need to add the keyword static to the front of the string declaration, therefore: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 static char a[] = "hello"; }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 As easy as... B or C?:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 A few words of warning. If you are familiar with BASIC then you will have to treat C strings, and even C arrays, with some caution. They are not as easy or as obvious to use and writing a}
\par {\loch\f1\fs16\lang1033\i0\b0 program that manipulates text is harder in C than in BASIC. If you try to use C strings as if it were BASIC strings you are sure to create some very weird and wonderful bugs! }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 A Sort Of Bubble Program:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This sections program implements a simple bubble sort - which is notorious for being one of the worst sorting methods known to programmer-kind, but it does have the advantage of being}
\par {\loch\f1\fs16\lang1033\i0\b0 easy and instructive. Some of the routines have already been described in the main text and a range of different methods of passing data in functions have also been used. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The main routine is sort which repeats the scan function on the array until the variable done is set to 0. The scan function simply scans down the array comparing elements that are next}
\par {\loch\f1\fs16\lang1033\i0\b0 door to each other. If they are in the wrong order then function swap is called to swap them over. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Study this program carefully with particular attention to the way arrays, array elements and variables are passed. It is worth saying that in some cases there are better ways of achieving the}
\par {\loch\f1\fs16\lang1033\i0\b0 same results. In particular, it would have been easier not to use the variable done, but to have returned the state as the result of the scan function. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #include <stdio.h>}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 void randdat(int a[] , int n);}
\par {\loch\f1\fs16\lang1033\i0\b0 void sort(int a[] , int n);}
\par {\loch\f1\fs16\lang1033\i0\b0 void scan(int a[] , int n , int *done);}
\par {\loch\f1\fs16\lang1033\i0\b0 void swap(int *a ,int *b);}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 main()}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0    int i;}
\par {\loch\f1\fs16\lang1033\i0\b0    int a[20];}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    randdat(a , 20);}
\par {\loch\f1\fs16\lang1033\i0\b0    sort(a , 20);}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    for(i=0;i<20;++i) printf("%d\\n" ,a[i]);}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 void randdat(int a[1] , int n)}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0   int i;}
\par {\loch\f1\fs16\lang1033\i0\b0   for (i=0 ; i<n ; ++i)}
\par {\loch\f1\fs16\lang1033\i0\b0    a[i] = rand()%n+1;}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 void sort(int a[1] , int n)}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0   int done;}
\par {\loch\f1\fs16\lang1033\i0\b0   done = 1;}
\par {\loch\f1\fs16\lang1033\i0\b0   while(done == 1) scan(a , n , &done);}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 void scan(int a[1] , int n , int *done)}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0   int i;}
\par {\loch\f1\fs16\lang1033\i0\b0   *done=0;}
\par {\loch\f1\fs16\lang1033\i0\b0   for(i=0 ; i<n-1 ; ++i)}
\par {\loch\f1\fs16\lang1033\i0\b0    \{}
\par {\loch\f1\fs16\lang1033\i0\b0      if(a[i]<a[i+1])}
\par {\loch\f1\fs16\lang1033\i0\b0       \{}
\par {\loch\f1\fs16\lang1033\i0\b0        swap(&a[i],&a[i+1]);}
\par {\loch\f1\fs16\lang1033\i0\b0        *done=1;}
\par {\loch\f1\fs16\lang1033\i0\b0       \}}
\par {\loch\f1\fs16\lang1033\i0\b0    \}}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 void swap(int *a ,int *b)}
\par {\loch\f1\fs16\lang1033\i0\b0  \{      }
\par {\loch\f1\fs16\lang1033\i0\b0   int temp;}
\par {\loch\f1\fs16\lang1033\i0\b0   temp = *a;}
\par {\loch\f1\fs16\lang1033\i0\b0   *a   = *b;}
\par {\loch\f1\fs16\lang1033\i0\b0   *b   = temp;}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par 
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic72}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Structures}}}}
}}{\loch\f1\fs16\lang1033{\fs28 Structures}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Objectives:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This section contains some very advanced but important features of the C programming language. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Having read this section you should be able to: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    1.program using a structure rather than several arrays. }
\par {\loch\f1\fs16\lang1033\i0\b0    2.how pointer can be used in combination with structures to form linked list. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Structures:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The array is an example of a data structure. It takes simple data types like int, char or double and organises them into a linear array of elements. The array serves most but not all of the}
\par {\loch\f1\fs16\lang1033\i0\b0 needs of the typical C program. The restriction is that an array is composed of elements all of the same type. At first this seems perfectly reasonable. After all why would you want an array}
\par {\loch\f1\fs16\lang1033\i0\b0 to be composed of twenty chars and two ints? Well this sort of mixture of data types working together is one of the most familiar of data structures. Consider for a moment a record card}
\par {\loch\f1\fs16\lang1033\i0\b0 which records name, age and salary. The name would have to be stored as a string, i.e. an array of chars terminated with an ASCII null character, and the age and salary could be ints. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 At the moment the only way we can work with this collection of data is as separate variables. This isn't as convenient as a single data structure using a single name and so the C language}
\par {\loch\f1\fs16\lang1033\i0\b0 provides struct. At first it is easier to think of this as a record - although it's a little more versatile than this suggests. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Defining A New Type:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Declaring a struct is a two-stage process. The first stage defines a new data type that has the required structure which can then be used to declare as many variables with the same}
\par {\loch\f1\fs16\lang1033\i0\b0 structure as required. This two-stage process is often confusing at first - especially as it results in the need to think up multiple names with the same general meaning - but it really is quite}
\par {\loch\f1\fs16\lang1033\i0\b0 simple. For example, suppose we need to store a name, age and salary as a single structure. You would first define the new data type using: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 struct emprec}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0    char name[25];}
\par {\loch\f1\fs16\lang1033\i0\b0    int age;}
\par {\loch\f1\fs16\lang1033\i0\b0    int pay;}
\par {\loch\f1\fs16\lang1033\i0\b0  \};}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 and then you would declare a new variable: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 struct emprec employee }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Notice that the new variable is called employee and it is of type emprec which has been defined earlier. You see what we mean about duplicating names - emprec is the name of the}
\par {\loch\f1\fs16\lang1033\i0\b0 general employee record structure and employee is a particular example of this general type. It might help to compare the situation with that of a general int type and a particular int}
\par {\loch\f1\fs16\lang1033\i0\b0 variable such as count - emprec is a type like int and employee is a variable like count. You can see that in general you can define a structure using: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 struct name}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0   list of component variables}
\par {\loch\f1\fs16\lang1033\i0\b0  \};}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 and you can have as long a list of component variables as you need. Once defined you can declare as many examples of the new type as you like using: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 struct name list of variables; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 For example: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 struct emprec employee, oldemploy, newemploy; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 and so on. If you want to you can also declare a structure variable within the type definition by writing its name before the final semi-colon. For example: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 struct emprec}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0    char name[25];}
\par {\loch\f1\fs16\lang1033\i0\b0    int age;}
\par {\loch\f1\fs16\lang1033\i0\b0    int pay;}
\par {\loch\f1\fs16\lang1033\i0\b0  \} employee;}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 defines the structure and declares a structure variable called employee. The only trouble with this form is that not many C programmers use it and many will even think that it is an error! So}
\par {\loch\f1\fs16\lang1033\i0\b0 how do we use a struct? }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 When you first start working with arrays it seems obvious that you access the individual elements of the array using an index as in a[i] for the ith element of the array, but how to get at the}
\par {\loch\f1\fs16\lang1033\i0\b0 individual components of a structure? The answer is that you have to use qualified names. You first give the name of the structure variable and then the name of the component separated by a}
\par {\loch\f1\fs16\lang1033\i0\b0 dot. For example, given: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 struct emprec employee }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 then: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 employee.age }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 is an int and: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 employee.name }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 is a char array. Once you have used a qualified name to get down to the level of a component then it behaves like a normal variable of the type. For example: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 employee.age=32; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 is a valid assignment to an int and: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 employee.name[2] = 'X'; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 is a valid assignment to an element of the char array. Notice that the qualified name uses the structure variable name and not the structure type name. You can also define a structure that}
\par {\loch\f1\fs16\lang1033\i0\b0 includes another structure as a component and of course that structure can contain another structure and so on. In this case you simply use the name of each structure in turn, separated by}
\par {\loch\f1\fs16\lang1033\i0\b0 dots, until you reach a final component that isn't a structure. For example, if you declare a struct firm which includes a component employee which is an emprec then: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 firm.employee.age }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 is an int. You may be feeling a little disappointed at the way in which structures are used. When you first meet arrays it is obvious how useful they are because the array index is an integer}
\par {\loch\f1\fs16\lang1033\i0\b0 which can be used within a loop to process vast amounts of data in a few lines of code. When you first meet the struct it just doesn't have the same obvious advantages. Because you have}
\par {\loch\f1\fs16\lang1033\i0\b0 to write out a full qualified name to get at each of the components of the struct you can't automate the processing in the same way. However this is reasonable enough when you remember}
\par {\loch\f1\fs16\lang1033\i0\b0 that each component of a struct can be a different data type! The point is that the value of a struct is different to that of an array. A struct can be used to wrap up a group of variables}
\par {\loch\f1\fs16\lang1033\i0\b0 which form a coherent entity. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 For example, C has no facilities for manipulating complex numbers but this is easy enough to put right using a struct and a few functions. A complex number is composed of two parts - a}
\par {\loch\f1\fs16\lang1033\i0\b0 real and imaginary part - which can be implemented as single or double precision values. This suggests defining a new struct type: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 struct comp}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0    float real;}
\par {\loch\f1\fs16\lang1033\i0\b0    float imag;}
\par {\loch\f1\fs16\lang1033\i0\b0  \};}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 After this you can declare new complex variables using something like: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 struct comp a,b; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The new complex variables cannot be used as if they were simple variables - because they are not. Most versions, of the C language do allow you to assign structures so you could write: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 a=b; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 as shorthand for }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  a.real=b.real;}
\par {\loch\f1\fs16\lang1033\i0\b0  a.imag=b.imag;}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Being able to assign structures is even more useful when they are bigger. However you can't expect C to sort out what you mean by c = a + b - for this you have to write out the rule for}
\par {\loch\f1\fs16\lang1033\i0\b0 addition as: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  c.real=a.real+b.real;}
\par {\loch\f1\fs16\lang1033\i0\b0  c.imag=a.imag+b.imag;}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Structures and Functions:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Of course a sensible alternative to writing out the addition each time is to define a function to do the same job - but this raises the question of passing structures as parameters. Fortunately}
\par {\loch\f1\fs16\lang1033\i0\b0 this isn't a big problem. Most C compilers, will allow you to pass entire structures as parameters and return entire structures. As with all C parameters structures are passed by value and so if}
\par {\loch\f1\fs16\lang1033\i0\b0 you want to allow a function to alter a parameter you have to remember to pass a pointer to a struct. Given that you can pass and return structs the function is fairly easy: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 struct comp add(struct comp a , struct comp b)}
\par {\loch\f1\fs16\lang1033\i0\b0 \{}
\par {\loch\f1\fs16\lang1033\i0\b0  struct comp c;}
\par {\loch\f1\fs16\lang1033\i0\b0  c.real=a.real+b.real;}
\par {\loch\f1\fs16\lang1033\i0\b0  c.imag=a.imag+ b.imag;}
\par {\loch\f1\fs16\lang1033\i0\b0  return c;}
\par {\loch\f1\fs16\lang1033\i0\b0 \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 After you have defined the add function you can write a complex addition as: }
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 x=add(y,z) }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 which isn't too far from the x=y+z that you would really like to use. Finally notice that passing a struct by value might use up rather a lot of memory as a complete copy of the structure is}
\par {\loch\f1\fs16\lang1033\i0\b0 made for the function. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Pointers to Structures:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 You can define a pointer to a structure in the same way as any pointer to any type. For example: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 struct emprec *ptr }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 defines a pointer to an emprec. You can use a pointer to a struct in more or less the same way as any pointer but the use of qualified names makes it look slightly different For example: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 (*ptr).age }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 is the age component of the emprec structure that ptr points at - i.e. an int. You need the brackets because '.' has a higher priority than '*'. The use of a pointer to a struct is so}
\par {\loch\f1\fs16\lang1033\i0\b0 common, and the pointer notation so ugly, that there is an equivalent and more elegant way of writing the same thing. You can use: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 prt->age }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 to mean the same thing as (*ptr).age. The notation gives a clearer idea of what is going on - prt points (i.e. ->) to the structure and .age picks out which component of the structure we}
\par {\loch\f1\fs16\lang1033\i0\b0 want. Interestingly until C++ became popular the -> notation was relatively rare and given that many C text books hardly mentioned it this confused many experienced C programmers! }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 There are many reasons for using a pointer to a struct but one is to make two way communication possible within functions. For example, an alternative way of writing the complex number}
\par {\loch\f1\fs16\lang1033\i0\b0 addition function is: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 void comp add(struct comp *a , struct comp *b , struct comp *c)}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0   c->real=a->real+b->real;}
\par {\loch\f1\fs16\lang1033\i0\b0   c->imag=a->imag+b->imag;}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 In this case c is now a pointer to a comp struct and the function would be used as: }
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 add(&x,&y,&z); }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Notice that in this case the address of each of the structures is passed rather than a complete copy of the structure - hence the saving in space. Also notice that the function can now change}
\par {\loch\f1\fs16\lang1033\i0\b0 the values of x, y and z if it wants to. It's up to you to decide if this is a good thing or not! }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Malloc:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Now we come to a topic that is perhaps potentially the most confusing. So far we have allowed the C compiler to work out how to allocate storage. For example when you declare a}
\par {\loch\f1\fs16\lang1033\i0\b0 variable: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int a; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 the compiler sorts out how to set aside some memory to store the integer. More impressive is the way that }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int a[50] }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 sets aside enough storage for 50 ints and sets the name a to point to the first element. Clever though this may be it is just static storage. That is the storage is allocated by the compiler}
\par {\loch\f1\fs16\lang1033\i0\b0 before the program is run - but what can you do if you need or want to create new variables as your program is running? The answer is to use pointers and the malloc function. The}
\par {\loch\f1\fs16\lang1033\i0\b0 statement: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 ptr=malloc(size); }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 reserves size bytes of storage and sets the pointer ptr to point to the start of it. This sounds excessively primitive - who wants a few bytes of storage and a pointer to it? You can make}
\par {\loch\f1\fs16\lang1033\i0\b0 malloc look a little more appealing with a few cosmetic changes. The first is that you can use the sizeof function to allocate storage in multiples of a given type. For example: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 sizeof(int) }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 returns a number that specifies the number of bytes needed to store an int. Using sizeof you can allocate storage using malloc as: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 ptr= malloc(sizeof(int)*N) }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 where N is the number of ints you want to create. The only problem is what does ptr point at? The compiler needs to know what the pointer points at so that it can do pointer arithmetic}
\par {\loch\f1\fs16\lang1033\i0\b0 correctly. In other words, the compiler can only interpret ptr++ or ptr=ptr+1 as an instruction to move on to the next int if it knows that the ptr is a pointer to an int. This works as}
\par {\loch\f1\fs16\lang1033\i0\b0 long as you define the ptr to be a pointer to the type of variable that you want to work with. Unfortunately this raises the question of how malloc knows what the type of the pointer}
\par {\loch\f1\fs16\lang1033\i0\b0 variable is - unfortunately it doesn't. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 To solve this problem you can use a TYPE cast. This C play on words is a mechanism to force a value to a specific type. All you have to do is write the TYPE specifier in brackets before}
\par {\loch\f1\fs16\lang1033\i0\b0 the value. So: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 ptr = (*int) malloc(sizeof(int)*N) }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 forces the value returned by malloc to be a pointer to int. Now you can see how a simple idea ends up looking complicated. OK, so now we can acquire some memory while the}
\par {\loch\f1\fs16\lang1033\i0\b0 program is running, but how can we use it? There are some simple ways of using it and some very subtle mistakes that you can make in trying to use it! For example, suppose during a}
\par {\loch\f1\fs16\lang1033\i0\b0 program you suddenly decide that you need an int array with 50 elements. You didn't know this before the program started, perhaps because the information has just been typed in by the}
\par {\loch\f1\fs16\lang1033\i0\b0 user. The easiest solution is to use: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int *ptr; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 and then later on: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 ptr = (*int) malloc(sizeof(int)*N) }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 where N is the number of elements that you need. After this definition you can use ptr as if it was a conventional array. For example: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 ptr[i] }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 is the ith element of the array. The trap waiting for you to make a mistake is when you need a few more elements of the array. You can't simply use malloc again to get the extra elements}
\par {\loch\f1\fs16\lang1033\i0\b0 because the block of memory that the next malloc allocates isn't necessarily next to the last lot. In other words, it might not simply tag on to the end of the first array and any assumption that}
\par {\loch\f1\fs16\lang1033\i0\b0 it does might end in the program simply overwriting areas of memory that it doesn't own. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Another fun error that you are not protected against is losing an area of memory. If you use malloc to reserve memory it is vital that you don't lose the pointer to it. If you do then that}
\par {\loch\f1\fs16\lang1033\i0\b0 particular chunk of memory isn't available for your program to use until it is restarted. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Structures and Linked Lists:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 You may be wondering why malloc has been introduced right after the structure. The answer is that the dynamic allocation of memory and the struct go together a bit like the array and}
\par {\loch\f1\fs16\lang1033\i0\b0 the for loop. The best way to explain how this all fits together is via a simple example. You can use malloc to create as many variables as you want as the program runs, but how do you}
\par {\loch\f1\fs16\lang1033\i0\b0 keep track of them? For every new variable you create you also need an extra pointer to keep track of it. The solution to this otherwise tricky problem is to define a struct which has a}
\par {\loch\f1\fs16\lang1033\i0\b0 pointer as one of its components. For example: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 struct list}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0   int data;}
\par {\loch\f1\fs16\lang1033\i0\b0   struct list *ptr;}
\par {\loch\f1\fs16\lang1033\i0\b0  \};}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This defines a structure which contains a single int and - something that looks almost paradoxical - a pointer to the structure that is being defined. All you really need to know is that this is}
\par {\loch\f1\fs16\lang1033\i0\b0 reasonable and it works. Now if you use malloc to create a new struct you also automatically get a new pointer to the struct. The final part of the solution is how to make use of the}
\par {\loch\f1\fs16\lang1033\i0\b0 pointers. If you start off with a single 'starter' pointer to the struct you can create the first new struct using malloc as: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 struct list *star;}
\par {\loch\f1\fs16\lang1033\i0\b0 start = (*struct list) malloc(sizeof(list))}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 After this start points to the first and only example of the struct. You can store data in the struct using statements like: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 start->data=value; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The next step is to create a second example of the struct: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 start = (*struct list) malloc(sizeof(list)); }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This does indeed give us a new struct but we have now lost the original because the pointer to it has been overwritten by the pointer to the new struct. To avoid losing the original the}
\par {\loch\f1\fs16\lang1033\i0\b0 simplest solution is to use: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 struct list *start,newitem;}
\par {\loch\f1\fs16\lang1033\i0\b0 newitem = (*struct list) malloc(sizeof(list));}
\par {\loch\f1\fs16\lang1033\i0\b0 start->prt=start;}
\par {\loch\f1\fs16\lang1033\i0\b0 start=newitem;}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This stores the location of the new struct in newitem. Then it stores the pointer to the existing struct into the newitem's pointer and sets the start of the list to be the newitem. Finally}
\par {\loch\f1\fs16\lang1033\i0\b0 the start of the list is set to point at the new struct. This procedure is repeated each time a new structure is created with the result that a linked list of structures is created. The pointer start}
\par {\loch\f1\fs16\lang1033\i0\b0 always points to the first struct in the list and the prt component of this struct points to the next and so on. You should be able to see how to write a program that examines or prints the}
\par {\loch\f1\fs16\lang1033\i0\b0 data in each of the structures. For example: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 thisptr=start;}
\par {\loch\f1\fs16\lang1033\i0\b0 while (1==1)}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0   printf("%d",thisprt-> data);}
\par {\loch\f1\fs16\lang1033\i0\b0   thisprt=thisprt->prt;}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This first sets thisptr to the start of the list, prints the data in the first element and then gets the pointer to the next struct in the list and so on. How does the program know it has reached}
\par {\loch\f1\fs16\lang1033\i0\b0 the end of the list? At the moment it just keeps going into the deep and uncharted regions of your machine's memory! To stop it we have to mark the end of the list using a null pointer.}
\par {\loch\f1\fs16\lang1033\i0\b0 Usually a pointer value of 0 is special in that it never occurs in a pointer pointing at a valid area of memory. You can use 0 to initialise a pointer so that you know it isn't pointing at anything}
\par {\loch\f1\fs16\lang1033\i0\b0 real. So all we have to do is set the last pointer in the list to 0 and then test for it That is: }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 thisptr=start;}
\par {\loch\f1\fs16\lang1033\i0\b0 while (thisptr!=0)}
\par {\loch\f1\fs16\lang1033\i0\b0  \{}
\par {\loch\f1\fs16\lang1033\i0\b0   printf("%d",thisprt->data);}
\par {\loch\f1\fs16\lang1033\i0\b0   thisprt=thisprt-> prt;}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 To be completely correct you should TYPE cast 0 to be a pointer to the struct in question. That is: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 while (thisptr!=(struct list*)0) }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 By generally mucking about with pointers stored in the list you can rearrange it, access it, sort it, delete items and do anything you want to. Notice that the structures in the list can be as}
\par {\loch\f1\fs16\lang1033\i0\b0 complicated as you like and, subject to there being enough memory, you can create as many structures as you like. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 You can use the same sort of technique to create even more complicated list structures. For example you can introduce another pointer into each structure and a pointer to the end of the list}
\par {\loch\f1\fs16\lang1033\i0\b0 so that you can work your way along it in the other direction - a doubly linked list. You can create stacks, queues, deques, trees and so on. The rest of the story is a matter of either}
\par {\loch\f1\fs16\lang1033\i0\b0 inventing these data structures for yourself or looking them up in a suitable book. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Structures and C++:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The reason why structures are even more important for today's budding C programmer is that they turn into classes in C++. A class is a structure where you can define components that are}
\par {\loch\f1\fs16\lang1033\i0\b0 functions. In this case the same distinction between a data TYPE and an example of the TYPE, i.e. a variable, is maintained only now the instances of the class include functions as well as}
\par {\loch\f1\fs16\lang1033\i0\b0 data. The same qualified naming system applies to the class and the use of pointers and the -> operator. As this is the basis of C++'s object-oriented features it is important to understand. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Header Files:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The final mystery of C that needs to be discussed is the header file. This started off as a simple idea, a convenience to make programming easier. If you have a standard set of instructions}
\par {\loch\f1\fs16\lang1033\i0\b0 that you want to insert in a lot of programs that you are writing then you can do it using the #include statement. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The # symbol at the start indicates that this isn't a C statement but one for the C pre-processor which looks at the text file before the compiler gets it. The #include tells the pre-processor}
\par {\loch\f1\fs16\lang1033\i0\b0 to read in a text file and treat it as if it was part of the program's text. For example: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #include "copy.txt" }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 could be used to include a copyright notice stored in the file copy.txt. However the most common use of the #include is to define constants and macros. The C pre-processor is almost}
\par {\loch\f1\fs16\lang1033\i0\b0 a language in its own right For example, if you define the identifier NULL as: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #define NULL 0 }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 then whenever you use NULL in your program the pre-processor substitutes 0. In most cases you want these definitions to be included in all your programs and so the obvious thing to do is}
\par {\loch\f1\fs16\lang1033\i0\b0 to create a separate file that you can #include. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This idea of using standard include files has spiralled out of all proportions. Now such include files are called header files and they are distinguished by ending in the extension .h. A header}
\par {\loch\f1\fs16\lang1033\i0\b0 file is generally used to define all of the functions, variables and constants contained in any function library that you might want to use. The header file stdio.h should be used if you want to}
\par {\loch\f1\fs16\lang1033\i0\b0 use the two standard I/O functions printf and scanf. The standard libraries have been covered in a previous section. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This sort of use of header files is simple enough but over time more and more standard elements of the C environment have been moved into header files. The result is that header files}
\par {\loch\f1\fs16\lang1033\i0\b0 become increasingly mysterious to the beginner. Perhaps they reach their ultimate in complexity as part of the Windows development environment So many constants and macros are defined}
\par {\loch\f1\fs16\lang1033\i0\b0 in the Windows header files that they amount to hundreds of lines! As another example of how you could use a header file consider the complex structure defined earlier. At the moment it}
\par {\loch\f1\fs16\lang1033\i0\b0 looks messy to declare a new complex variable as: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 struct comp a,b; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 If you want to make the complex TYPE look like other data types all you need is a single #define }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #define COMPLEX struct comp }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 After this you can write: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 COMPLEX a,b; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 and the pre-processor will automatically replace COMPLEX by struct comp for you when you compile the program. Put this #define and any others needed to make the complex number}
\par {\loch\f1\fs16\lang1033\i0\b0 type work and you have the makings of a complex.h header fileof your very own.}
\par 
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic73}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 File Handling}}}}
}}{\loch\f1\fs16\lang1033{\fs28 File Handling}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033  
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Objectives:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 So far we have entered information into our programs via the computer's keyboard. This is somewhat laborious if we have a lot of data to process. The solution is to combine all the input}
\par {\loch\f1\fs16\lang1033\i0\b0 data into a file and let our C program read the information when it is required. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Having read this section you should be able to: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    1.open a file for reading or writing }
\par {\loch\f1\fs16\lang1033\i0\b0    2.read/write the contents of a file }
\par {\loch\f1\fs16\lang1033\i0\b0    3.close the file }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The Stream File:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Although C does not have any built-in method of performing file I/O, the C standard library contains a very rich set of I/O functions providing an efficient, powerful and flexible approach.}
\par {\loch\f1\fs16\lang1033\i0\b0 We will cover the ANSI file system but it must be mentioned that a second file system based upon the original UNIX system is also used but not covered on this course.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 A very important concept in C is the stream. In C, the stream is a common, logical interface to the various devices that comprise the computer. In its most common form, a stream is a}
\par {\loch\f1\fs16\lang1033\i0\b0 logical interface to a file. As C defines the term "file", it can refer to a disk file, the screen, the keyboard, a port, a file on tape, and so on. Although files differ in form and capabilities, all}
\par {\loch\f1\fs16\lang1033\i0\b0 streams are the same. The stream provides a consistent interface and to the programmer one hardware device will look much like another.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 A stream is linked to a file using an open operation. A stream is disassociated from a file using a close operation. The current location, also refered to as the current position, is the}
\par {\loch\f1\fs16\lang1033\i0\b0 location in a file where the next file access will occur. There are two types of streams: text (used with ASCII characters some character translation takes place, may not be one-to-one}
\par {\loch\f1\fs16\lang1033\i0\b0 correspondence between stream and whats in the file) and binary (used with any type of data, no character translation, one-to-one between stream and file).}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 To open a file and associate it with a stream, use fopen(). Its prototype is shown here:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 FILE *fopen(char *fname,char *mode);}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The fopen() function, like all the file-system functions, uses the header stdio.h . The name of the file to open is pointed to by fname (must be a valid name). The string pointed at for}
\par {\loch\f1\fs16\lang1033\i0\b0 mode determines how the file may be accesed as shown:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Mode                      Meaning}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 r                  Open a text file for reading}
\par {\loch\f1\fs16\lang1033\i0\b0 w                  Create a text file for writing}
\par {\loch\f1\fs16\lang1033\i0\b0 a                  Append to a text file}
\par {\loch\f1\fs16\lang1033\i0\b0 rb                 Open a binary file for reading}
\par {\loch\f1\fs16\lang1033\i0\b0 wb                 Open a binary file for writing}
\par {\loch\f1\fs16\lang1033\i0\b0 ab                 Append to a binary file}
\par {\loch\f1\fs16\lang1033\i0\b0 r+                 Open a text file for read/write}
\par {\loch\f1\fs16\lang1033\i0\b0 w+                 Create a text file for read/write}
\par {\loch\f1\fs16\lang1033\i0\b0 a+                 Append or create a text file for read/write}
\par {\loch\f1\fs16\lang1033\i0\b0 r+b                Open a binary file for read/write}
\par {\loch\f1\fs16\lang1033\i0\b0 w+b                Create a binary file for read/write}
\par {\loch\f1\fs16\lang1033\i0\b0 a+b                Append a binary file for read/write}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 If the open operation is successful, fopen() returns a valid file pointer. The type FILE is defined in stdio.h. It is a structure that holds various kinds of information about the file, such}
\par {\loch\f1\fs16\lang1033\i0\b0 as size.The file pointer will be used with all other functions that operate on the file and it must never be altered or the object it points to. If fopen() fails it returns a NULL pointer so}
\par {\loch\f1\fs16\lang1033\i0\b0 this must always be checked for when opening a file. For example:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 FILE *fp;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 if ((fp = fopen("myfile", "r")) ==NULL)\{}
\par {\loch\f1\fs16\lang1033\i0\b0   printf("Error opening file\\n");}
\par {\loch\f1\fs16\lang1033\i0\b0   exit(1); }
\par {\loch\f1\fs16\lang1033\i0\b0 \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 To close a file, use fclose(), whose prototype is}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int fclose(FILE *fp);}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The fclose() function closes the file associated with fp, which must be a valid file pointer previously obtained using fopen(), and disassociates the stream from the file. The}
\par {\loch\f1\fs16\lang1033\i0\b0 fclose() function returns 0 if successful and EOF (end of file) if an error occurs.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Once a file has been opened, depending upon its mode, you may read and/or write bytes to or from it using these two functions.}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 int fgetc(FILE *fp);}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 int fputc(int ch, FILE *fp);}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The getc() function reads the next byte from the file and returns its as an integer and if error occurs returns EOF. The getc() function also returns EOF when the end of file is reached. Your}
\par {\loch\f1\fs16\lang1033\i0\b0 routine can assign fget()'s return value to a char you dont't have to assign it to an integer.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The fput() function writes the bytes contained in ch to the file associated with fp as an unsigned char. Although ch is defined as an int, you may call it using simply a char. The fput()}
\par {\loch\f1\fs16\lang1033\i0\b0 function returns the character written if successful or EOF if an error occurs. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Text File Functions:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 When working with text files, C provides four functions which make file operations easier. The first two are called fputs() and fgets(), which write or read a string from a file,}
\par {\loch\f1\fs16\lang1033\i0\b0 respectively. Their prototypes are:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int fputs(char *str,FILE *fp);}
\par {\loch\f1\fs16\lang1033\i0\b0 char *fgets(char *str, int num, FILE *fp);}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The fputs() function writes the string pointed to by str to the file associated with fp. It returns EOF if an error occurs and a non-negative value if successful. The null that terminates str is}
\par {\loch\f1\fs16\lang1033\i0\b0 not written and it does not automatically append a carriage return/linefeed sequence.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The fget() function reads characters from the file associated with fp into a string pointed to by str until num-1 characters have been read, a newline character is encountered, or the end of}
\par {\loch\f1\fs16\lang1033\i0\b0 the file is reached. The string is null-terminated and the newline character is retained. The function returns str if successful and a null pointer if an error occurs.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The other two file handling functions to be covered are fprintf() and fscanf(). These functions operate exactly like printf() and scanf() except that they work with files. Their}
\par {\loch\f1\fs16\lang1033\i0\b0 prototypes are:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int fprintf(FILE *fp, char *control-string, ...);}
\par {\loch\f1\fs16\lang1033\i0\b0 int fscanf(FILE *fp, char *control-string ...);}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Instead of directing their I/O operations to the console, these functions operate on the file specified by fp. Otherwise their operations are the same as their console-based relatives. The}
\par {\loch\f1\fs16\lang1033\i0\b0 advantages to fprintf() and fscanf() is that they make it very easy to write a wide variety of data to a file using a text format. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Binary File Functions:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The C file system includes two important functions: fread() and fwrite(). These functions can read and write any type of data, using any kind of representation. Their prototypes are:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 size_t fread(void *buffer, size_t size, size_t num,FILE *fp);}
\par {\loch\f1\fs16\lang1033\i0\b0 size_t fwrite(void *buffer, size_t size, size_t num, FILE *fp);}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The fread() function reads from the file associated with fp, num number of objects, each object size bytes long, into buffer pointed to by buffer. It returns the number of objects actually}
\par {\loch\f1\fs16\lang1033\i0\b0 read. If this value is 0, no objects have been read, and either end of file has been encountered or an error has occurred. You can use feof() or ferror() to find out which. Their}
\par {\loch\f1\fs16\lang1033\i0\b0 prototypes are:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int feof(FILE *fp);}
\par {\loch\f1\fs16\lang1033\i0\b0 int ferror(FILE *fp);}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The feof() function returns non-0 if the file associated with fp has reached the end of file, otherwise it returns 0. This function works for both binary files and text files. The ferror()}
\par {\loch\f1\fs16\lang1033\i0\b0 function returns non-0 if the file associated with fp has experienced an error, otherwise it returns 0. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The fwrite() function is the opposite of fread(). It writes to file associated with fp, num number of objects, each object size bytes long, from the buffer pointed to by buffer. It returns}
\par {\loch\f1\fs16\lang1033\i0\b0 the number of objects written. This value will be less than num only if an output error as occurred.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The void pointer is a pointer that can point to any type of data without the use of a TYPE cast (known as a generic pointer). The type size_t is a variable that is able to hold a value equal}
\par {\loch\f1\fs16\lang1033\i0\b0 to the size of the largest object surported by the compiler. As a simple example, this program write an integer value to a file called MYFILE using its internal, binary representation.}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #include <stdio.h>  /* header file  */}
\par {\loch\f1\fs16\lang1033\i0\b0 #include <stdlib.h>}
\par {\loch\f1\fs16\lang1033\i0\b0 void main(void)}
\par {\loch\f1\fs16\lang1033\i0\b0 \{}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  FILE *fp;   /* file pointer */}
\par {\loch\f1\fs16\lang1033\i0\b0  int i;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  /* open file for output */}
\par {\loch\f1\fs16\lang1033\i0\b0  if ((fp = fopen("myfile", "w"))==NULL)\{}
\par {\loch\f1\fs16\lang1033\i0\b0   printf("Cannot open file \\n");}
\par {\loch\f1\fs16\lang1033\i0\b0   exit(1);}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par {\loch\f1\fs16\lang1033\i0\b0  i=100;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  if (fwrite(&i, 2, 1, fp) !=1)\{}
\par {\loch\f1\fs16\lang1033\i0\b0   printf("Write error occurred");}
\par {\loch\f1\fs16\lang1033\i0\b0   exit(1);}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par {\loch\f1\fs16\lang1033\i0\b0  fclose(fp);}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  /* open file for input */}
\par {\loch\f1\fs16\lang1033\i0\b0  if ((fp =fopen("myfile", "r"))==NULL)\{}
\par {\loch\f1\fs16\lang1033\i0\b0   printf("Read error occurred");}
\par {\loch\f1\fs16\lang1033\i0\b0   exit(1);}
\par {\loch\f1\fs16\lang1033\i0\b0  \}}
\par {\loch\f1\fs16\lang1033\i0\b0  printf("i is %d",i);}
\par {\loch\f1\fs16\lang1033\i0\b0  fclose(fp);}
\par {\loch\f1\fs16\lang1033\i0\b0 \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 File System Functions:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 You can erase a file using remove(). Its prototype is}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int remove(char *file-name);}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 You can position a file's current location to the start of the file using rewind(). Its prototype is}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 void rewind(FILE *fp);}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Hopefully I have given you enough information to at least get you started with files. Its really rather easy once you get started. }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Command Line Parameters:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Many programs allow command-line arguments to be specified when they are run. A command-line argument is the information that follows the program's name on the command line of the}
\par {\loch\f1\fs16\lang1033\i0\b0 operating system. Command-line arguments are used to pass information to the program. For example, when you use a text editor, you probably specify the name of the file you want to edit}
\par {\loch\f1\fs16\lang1033\i0\b0 after the name of the word processing program. For example, if you use a word processor called WP, then this line causes the file TEST to be edited.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 WP TEST }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Here, TEST is a command-line argument. Your C programs may also utilize command-line arguments. These are passed to a C program through two arguments to the main() function. The}
\par {\loch\f1\fs16\lang1033\i0\b0 parameters are called argc and argv. These parameters are optional and are not used when no command-line arguments are being used. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The argc parameter holds the number of arguments on the command-line and is an integer. It will always be at least 1 because the name of the program qualifies as the first argument. The}
\par {\loch\f1\fs16\lang1033\i0\b0 argv parameter is an array of string pointers. The most common method for declaring argv is shown here. }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 char *argv[]; }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The empty brackets indicate that it is an array of undetermined length. All command-line arguments are passed to main() as strings. To access an indivual string, index argv. For example,}
\par {\loch\f1\fs16\lang1033\i0\b0 argv[0] points to the program's name and argv[1] points to the first argument. This program displays all the command-line arguments that it is called with.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #include <stdio.h>}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 void main(int argc, char *argv[])}
\par {\loch\f1\fs16\lang1033\i0\b0 \{}
\par {\loch\f1\fs16\lang1033\i0\b0  int i;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0  for (i=1; i&ltargc; i++) printf("%s",argv[i]);}
\par {\loch\f1\fs16\lang1033\i0\b0 \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The ANSI C standard does not specify what constitutes a command-line argument, because operatoring systems vary considerably on this point. However, the most common convention is}
\par {\loch\f1\fs16\lang1033\i0\b0 as follows:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Each command-line argument must be separated by a space or a tab character. Commas, semicolons, and the like are not considered separators. For example:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This is a test}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 is made up of four strings, but}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 this,that,and,another}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 is one string. If you need to pass a command-line argument that does, in fact contain spaces, you must place it between quotes, as shown in this example:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 "this is a test"}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 A further example of the use of argc and argv now follows: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 void main(int argc, char *argv[])}
\par {\loch\f1\fs16\lang1033\i0\b0 \{}
\par {\loch\f1\fs16\lang1033\i0\b0   if (argc !=2)  \{}
\par {\loch\f1\fs16\lang1033\i0\b0      printf("Specify a password");}
\par {\loch\f1\fs16\lang1033\i0\b0      exit(1);}
\par {\loch\f1\fs16\lang1033\i0\b0   \}}
\par {\loch\f1\fs16\lang1033\i0\b0   if (!strcmp(argv[1], "password"))}
\par {\loch\f1\fs16\lang1033\i0\b0      printf("Access Permitted");}
\par {\loch\f1\fs16\lang1033\i0\b0   else }
\par {\loch\f1\fs16\lang1033\i0\b0     \{}
\par {\loch\f1\fs16\lang1033\i0\b0        printf("Access denied");}
\par {\loch\f1\fs16\lang1033\i0\b0        exit(1);}
\par {\loch\f1\fs16\lang1033\i0\b0     \}}
\par {\loch\f1\fs16\lang1033\i0\b0 program code here ......}
\par {\loch\f1\fs16\lang1033\i0\b0 \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 This program only allows access to its code if the correct password is entered as a command-line argument. There are many uses for command-line arguments and they can be a powerful}
\par {\loch\f1\fs16\lang1033\i0\b0 tool.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 My final example program takes two command-line arguments. The first is the name of a file, the second is a character. The program searches the specified file, looking for the character. If}
\par {\loch\f1\fs16\lang1033\i0\b0 the file contains at least one of these characters, it reports this fact. This program uses argv to access the file name and the character for which to search.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 /*Search specified file for specified character. */}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 #include <stdio.h>}
\par {\loch\f1\fs16\lang1033\i0\b0 #include <stdlib.h>}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 void main(int argc, char *argv[])}
\par {\loch\f1\fs16\lang1033\i0\b0 \{}
\par {\loch\f1\fs16\lang1033\i0\b0   FILE *fp;   /* file pointer */}
\par {\loch\f1\fs16\lang1033\i0\b0   char ch;}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   /* see if correct number of command line arguments */}
\par {\loch\f1\fs16\lang1033\i0\b0    if(argc !=3)  \{}
\par {\loch\f1\fs16\lang1033\i0\b0      printf("Usage: find <filename> <ch>\\n");}
\par {\loch\f1\fs16\lang1033\i0\b0      exit(1);}
\par {\loch\f1\fs16\lang1033\i0\b0    \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    /* open file for input */}
\par {\loch\f1\fs16\lang1033\i0\b0    if ((fp = fopen(argv[1], "r"))==NULL)  \{}
\par {\loch\f1\fs16\lang1033\i0\b0      printf("Cannot open file \\n");}
\par {\loch\f1\fs16\lang1033\i0\b0      exit(1);}
\par {\loch\f1\fs16\lang1033\i0\b0    \}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0   /* look for character */}
\par {\loch\f1\fs16\lang1033\i0\b0   while ((ch = getc(fp)) !=EOF)  /* where getc() is a */}
\par {\loch\f1\fs16\lang1033\i0\b0     if (ch== *argv[2]) \{         /*function to get one char*/}
\par {\loch\f1\fs16\lang1033\i0\b0       printf("%c found",ch);     /* from the file */}
\par {\loch\f1\fs16\lang1033\i0\b0       break;}
\par {\loch\f1\fs16\lang1033\i0\b0     \}}
\par {\loch\f1\fs16\lang1033\i0\b0    fclose(fp);}
\par {\loch\f1\fs16\lang1033\i0\b0 \}}
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 The names of argv and argc are arbitrary - you can use any names you like. However, argc and argv have traditionally been used since C's origin. It is a good idea to use these names so}
\par {\loch\f1\fs16\lang1033\i0\b0 that anyone reading your program can quickly identify them as command-line parameters.}
\par 
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic74}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Recommended Books}}}}
}}{\loch\f1\fs16\lang1033{\fs28 Recommended Books}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 It is always difficult to recommend books for any course and none more so that a C programming course - there are plenty of book to chose from. It is important to get a book that suits}
\par {\loch\f1\fs16\lang1033\i0\b0 your reading style and also provides you with plenty of worked examples.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 A suggested reading list is as follows:}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Title:}}{\loch\f1\fs16\lang1033 The C Programming Language ANSI C Version}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Author:}}{\loch\f1\fs16\lang1033 Kernighan & Ritchie}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Publisher:}}{\loch\f1\fs16\lang1033 Prentice Hall Software Series}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b ISBN:}}{\loch\f1\fs16\lang1033 0-13-110362-8}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Comment:}}{\loch\f1\fs16\lang1033 Ideal reference book and goes well beyond the level of this course. It is expensive but the serious C programmer will kick themself if they don't buy this book. }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Title:}}{\loch\f1\fs16\lang1033 ANSI C - Made Easy}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Author:}}{\loch\f1\fs16\lang1033 Herbert Schildt}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Publisher:}}{\loch\f1\fs16\lang1033 Osborne McGraw-Hill}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b ISBN:}}{\loch\f1\fs16\lang1033 0-07-881500-2}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Comment: }
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Title:}}{\loch\f1\fs16\lang1033 Learning to Program in C}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Author:}}{\loch\f1\fs16\lang1033 N. Kantaris}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Publisher: Babani}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b ISBN:}}{\loch\f1\fs16\lang1033 0-85934-203-4}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Comment:}}{\loch\f1\fs16\lang1033 A good cheap beginners guide. }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Title:}}{\loch\f1\fs16\lang1033 Illustrating ANSI C}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Author:}}{\loch\f1\fs16\lang1033 Donald Alcock}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Publisher:}}{\loch\f1\fs16\lang1033 Cambridge University Press}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b ISBN:}}{\loch\f1\fs16\lang1033 0-521-42483-6}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Comment:}}{\loch\f1\fs16\lang1033 A good book for the mathematically inclined. }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Title:}}{\loch\f1\fs16\lang1033 C - The Complete Reference}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Author:}}{\loch\f1\fs16\lang1033 Herbert Schildt}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Publisher:}}{\loch\f1\fs16\lang1033 Osborne McGraw-Hill}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b ISBN:}}{\loch\f1\fs16\lang1033 0-07-881263-1}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Comment: }
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Title:}}{\loch\f1\fs16\lang1033 Numerical Recipies in C}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Author:}}{\loch\f1\fs16\lang1033 W.H.Press, et al}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\loch\f1\fs16\lang1033\i0\b{\b Comment:}}{\loch\f1\fs16\lang1033 An advanced level book with, as the name implies, ready-made solutions to your programming problems.}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic76}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Example Programs Database}}}}
}}{\loch\f1\fs16\lang1033{\fs28\f8 Objectives}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 This section is only for reference! It contains the following information: }
\par 
\par {\loch\f1\fs16\lang1033\i0\b0    1.Names of all C's Standard Libraries }
\par {\loch\f1\fs16\lang1033\i0\b0    2.The functions they contain }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Input and Output: <stdio.h>}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 FILE *fopen(const char *filename, const char *mode) }
\par {\loch\f1\fs16\lang1033\i0\b0 FILE *freopen(const char *filename, const char *mode, FILE *stream) }
\par {\loch\f1\fs16\lang1033\i0\b0 int fflush(FILE *stream) }
\par {\loch\f1\fs16\lang1033\i0\b0 int fclose(FILE *stream) }
\par {\loch\f1\fs16\lang1033\i0\b0 int remove(const char *filename) }
\par {\loch\f1\fs16\lang1033\i0\b0 int rename(const char *oldname, const char *newname) }
\par {\loch\f1\fs16\lang1033\i0\b0 FILE *tmpfile(void) }
\par {\loch\f1\fs16\lang1033\i0\b0 char *tmpnam(char s[L_tmpnam]) }
\par {\loch\f1\fs16\lang1033\i0\b0 int setvbuf(FILE *stream, char *buf, int mode, size_t size) }
\par {\loch\f1\fs16\lang1033\i0\b0 void setbuf(FILE *stream, char *buf) }
\par {\loch\f1\fs16\lang1033\i0\b0 int fprint(FILE *stream, const char *format, ...) }
\par {\loch\f1\fs16\lang1033\i0\b0 int sprintf(char *s, const char *format, ...) }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 vprintf(const char *format, va_list arg) }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 vfprintf(FILE *stream, const char *format, va_list arg) }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 vsprintf(char *s, const char *format, va_list arg) }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 int fscanf(FILE *stream, const char *format, ...) }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 int scanf(const char *format, ...) }
\par {\loch\f1\fs16\lang1033\i0\b0 int sscanf(char *s, const char *format, ...) }
\par {\loch\f1\fs16\lang1033\i0\b0 int fgetc(FILE *stream) }
\par {\loch\f1\fs16\lang1033\i0\b0 char *fgets(char *s, int n, FILE *stream) }
\par {\loch\f1\fs16\lang1033\i0\b0 int fputc(int c, FILE *stream) }
\par {\loch\f1\fs16\lang1033\i0\b0 int fputs(const char *s, FILE *stream) }
\par {\loch\f1\fs16\lang1033\i0\b0 int getc(FILE *stream) }
\par {\loch\f1\fs16\lang1033\i0\b0 int getchar(void) }
\par {\loch\f1\fs16\lang1033\i0\b0 char *gets(char *s) }
\par {\loch\f1\fs16\lang1033\i0\b0 int putc(int c, FILE *stream) }
\par {\loch\f1\fs16\lang1033\i0\b0 int putchar(int c) }
\par {\loch\f1\fs16\lang1033\i0\b0 int ungetc(int c, FILE *stream) }
\par {\loch\f1\fs16\lang1033\i0\b0 size_t fread(void *ptr, size_t size, size_t nobj, FILE *stream) }
\par {\loch\f1\fs16\lang1033\i0\b0 size_t fwrite(const void *ptr, size_t size, size_t nobj, FILE *stream) }
\par {\loch\f1\fs16\lang1033\i0\b0 int fseek(FILE *stream, long offset, int orogin) }
\par {\loch\f1\fs16\lang1033\i0\b0 long ftell(FILE *stream) }
\par {\loch\f1\fs16\lang1033\i0\b0 void rewind(FILE *stream) }
\par {\loch\f1\fs16\lang1033\i0\b0 int fgetpos(FILE *stream, fpos_t *ptr) }
\par {\loch\f1\fs16\lang1033\i0\b0 int fsetpos(FILE *stream, const fpos_t *ptr) }
\par {\loch\f1\fs16\lang1033\i0\b0 void clearerr(FILE *stream) }
\par {\loch\f1\fs16\lang1033\i0\b0 int feof(FILE *stream) }
\par {\loch\f1\fs16\lang1033\i0\b0 int ferror(FILE *stream) }
\par {\loch\f1\fs16\lang1033\i0\b0 void perror(const char *s) }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Character Class Tests: <ctype.h>}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 isalnum(c) }
\par {\loch\f1\fs16\lang1033\i0\b0 isalpha(c) }
\par {\loch\f1\fs16\lang1033\i0\b0 iscntrl(c) }
\par {\loch\f1\fs16\lang1033\i0\b0 isdigit(c) }
\par {\loch\f1\fs16\lang1033\i0\b0 isgraph(c) }
\par {\loch\f1\fs16\lang1033\i0\b0 islower(c) }
\par {\loch\f1\fs16\lang1033\i0\b0 isprint(c) }
\par {\loch\f1\fs16\lang1033\i0\b0 ispunct(c) }
\par {\loch\f1\fs16\lang1033\i0\b0 isspace(c) }
\par {\loch\f1\fs16\lang1033\i0\b0 isupper(c) }
\par {\loch\f1\fs16\lang1033\i0\b0 isxdigit(c) }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 String Functions: <string.h>}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 char *strcpy(s , ct) }
\par {\loch\f1\fs16\lang1033\i0\b0 char *strncpy(s , ct , n) }
\par {\loch\f1\fs16\lang1033\i0\b0 char *strcat(s , ct) }
\par {\loch\f1\fs16\lang1033\i0\b0 char *strncat(s , ct , n) }
\par {\loch\f1\fs16\lang1033\i0\b0 int strcmp(cs , ct) }
\par {\loch\f1\fs16\lang1033\i0\b0 int strncmp(cs , ct ,n) }
\par {\loch\f1\fs16\lang1033\i0\b0 char *strchr(cs , c) }
\par {\loch\f1\fs16\lang1033\i0\b0 char *strrchr(cs , c) }
\par {\loch\f1\fs16\lang1033\i0\b0 size_t strspn(cs , ct) }
\par {\loch\f1\fs16\lang1033\i0\b0 size_t strcspn(cs , ct) }
\par {\loch\f1\fs16\lang1033\i0\b0 char *strstr(cs , ct) }
\par {\loch\f1\fs16\lang1033\i0\b0 size_t strlen(cs) }
\par {\loch\f1\fs16\lang1033\i0\b0 char *strerror(n) }
\par {\loch\f1\fs16\lang1033\i0\b0 char *strtok(s , ct) }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Mathematical Functions: <math.h>}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 sin(x) }
\par {\loch\f1\fs16\lang1033\i0\b0 cos(x) }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 tan(x) }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 asin(x) }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 acos(x) }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 atan(x) }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 atan2(x) }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 sinh(x) }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 cosh(x) }
\par {\loch\f1\fs16\lang1033\i0\b0 tanh(x) }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 exp(x) }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 log(x) }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 log10(x) }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 pow(x,y) }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 sqrt(x) }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 ceil(x) }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 floor(x) }
\par {\loch\f1\fs16\lang1033\i0\b0 fabs(x) }
\par {\loch\f1\fs16\lang1033\i0\b0 ldexp(x) }
\par {\loch\f1\fs16\lang1033\i0\b0 frexp(x,double *ip) }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 modf(x,double *ip) }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 fmod(x,y) }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Utility Functions: <stdlib.h>}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 double atof(const char *s) }
\par {\loch\f1\fs16\lang1033\i0\b0 int atoi(const char *s }
\par {\loch\f1\fs16\lang1033\i0\b0 long atol(const char *s) }
\par {\loch\f1\fs16\lang1033\i0\b0 double strrod(const char *s, char **endp) }
\par {\loch\f1\fs16\lang1033\i0\b0 long strtol(const char *s, char **endp, int base) }
\par {\loch\f1\fs16\lang1033\i0\b0 unsigned long strtoul(const char *s, char **endp, int base) }
\par {\loch\f1\fs16\lang1033\i0\b0 int rand(void) }
\par {\loch\f1\fs16\lang1033\i0\b0 void srand(unsigned int seed) }
\par {\loch\f1\fs16\lang1033\i0\b0 void *calloc(size_t nobj, size_t size) }
\par {\loch\f1\fs16\lang1033\i0\b0 void *malloc(size_t size) }
\par {\loch\f1\fs16\lang1033\i0\b0 void *realloc(void *p, size_t size) }
\par {\loch\f1\fs16\lang1033\i0\b0 void free(void *p) }
\par {\loch\f1\fs16\lang1033\i0\b0 void abort(void) }
\par {\loch\f1\fs16\lang1033\i0\b0 void exit(int status) }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 int atexit(void (*fcn)(void)) }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 int system(const char *s) }
\par {\loch\f1\fs16\lang1033\i0\b0 char *getenv(const char *name) }
\par {\loch\f1\fs16\lang1033\i0\b0 void *bsearch(const void *key, const void *base, size_t n, size_t size, int (*cmp)(const void *keyval, const void *datum)) }
\par {\loch\f1\fs16\lang1033\i0\b0 void qsort(void *base, size_t n, size_t size, int (*cmp)(const void *, const void *)) }
\par {\loch\f1\fs16\lang1033\i0\b0 int abs(int n) }
\par {\loch\f1\fs16\lang1033\i0\b0 long labs(long n) }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 div_t div(int num, int denom) }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 ldiv_t ldiv(long num , long denom) }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Diagnostics: <assert.h>}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 void assert(int expression) }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Non-local Jumps: <setjmp.h>}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 int setjmp(jmp_buf env) }
\par {\loch\f1\fs16\lang1033\i0\b0 void longjmp(jmp_buf env, int val) }
\par 
\par 
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Signals: <signal.h>}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 void (*signal(int sig, void (*handler)(int)))(int) }
\par 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Data and Time Functions: <time.h>}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 clock_t clock(void) }
\par {\loch\f1\fs16\lang1033\i0\b0 time_t time(time_t , *tp }
\par {\loch\f1\fs16\lang1033\i0\b0 double difftime(time_t time2 , time_t time1) }
\par {\loch\f1\fs16\lang1033\i0\b0 time_t mktime(struct tm *tp) }
\par {\loch\f1\fs16\lang1033\i0\b0 char *asctime(const time_t *tp) }
\par {\loch\f1\fs16\lang1033\i0\b0 char *ctime(const time_t *tp) }
\par {\loch\f1\fs16\lang1033\i0\b0 struct tm *gmtime(const time_t *tp) }
\par {\loch\f1\fs16\lang1033\i0\b0 struct tm *localtime(const time_t *tp) }
\par {\loch\f1\fs16\lang1033\i0\b0 size_t strftime(char *s, size_t smax, const char *fmt, const struct tm *tp)}
\par 
\par 
\par 
\par 
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote #\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  ID_SHORTCUTS}}}
{\loch\f1\fs20\lang1033{\*\cs79\cf0{\*\updnprop5800}\up5\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033\fs20\fs20\fs20 {\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  Editor Shortcuts}}}
{\super K{\footnote K\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  shortcuts;editor;}}}
}}{\loch\f1\fs16\lang1033{\b\fs28\cf6 Editor Shortcuts}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par \pard\plain \ltrpar\s10\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ab\ltrch\dbch\af1\afs24\langfe1033\ab\loch\f1\fs24\lang1033\b {\loch\f1\fs16\lang1033\i0\b Cursor:}
\par \pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 These commands control how the cursor behaves.}
\par 
\par \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx38\cellx3431\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Command}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Description}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx38\cellx3431\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx38\cellx3431\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Left Arrow}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Left one character}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx38\cellx3431\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Right Arrow}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Right one character}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx38\cellx3431\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Up Arrow}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Up one line}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx38\cellx3431\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Down Arrow}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Down one line}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx38\cellx3431\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + Left}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Left one word}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx38\cellx3431\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + Right}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Right one word}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx38\cellx3431\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Home}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Start of line}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx38\cellx3431\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 End}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 End of line}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx38\cellx3431\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Page Up}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Up one page}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx38\cellx3431\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Page Down}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Down one page}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx38\cellx3431\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Left one page}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx38\cellx3431\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Right one page}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx38\cellx3431\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + Page Up}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Top of age}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx38\cellx3431\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + Page Down}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Bottom of page}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx38\cellx3431\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + Home}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Abs begin}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx38\cellx3431\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + End}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Abs end}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx38\cellx3431\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Move specified coordinates}
\cell\row\pard \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par \pard\plain \ltrpar\s10\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ab\ltrch\dbch\af1\afs24\langfe1033\ab\loch\f1\fs24\lang1033\b {\loch\f1\fs16\lang1033\i0\b Selection:}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 These commands control how the currently highlighted text behaves.}
\par 
\par \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3429\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Command}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Description}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3429\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3429\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Shift + Left}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Select left}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3429\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Shift + Right}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Select right}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3429\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Shift + Up}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Select up}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3429\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Shift + Down}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Select down}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3429\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + Shift + Left}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Select word left}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3429\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + Shift + Right}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Select word right}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3429\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Shift + Home}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Select line start}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3429\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Shift + End}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Select line end}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3429\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Shift + Page Up}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Select page up}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3429\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Shift + Page Down}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Select page down}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3429\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Select page left}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3429\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Select page right}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3429\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + Shift + Page Up}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Select page top}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3429\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + Shift + Page Down}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Select page bottom}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3429\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + Shift + Home}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Select editor top}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3429\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + Shift + End}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Select gotoxy}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3429\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + A}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Select All}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3429\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + Insert}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Copy select to clip}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3429\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + C}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\row\pard \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par \pard\plain \ltrpar\s10\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ab\ltrch\dbch\af1\afs24\langfe1033\ab\loch\f1\fs24\lang1033\b {\loch\f1\fs16\lang1033\i0\b Scrolling:}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 These commands control everything to do with scrolling.}
\par 
\par \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3429\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Command}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Description}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3429\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3429\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Scroll Up + Control}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Go up one line}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3429\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Scroll Down + Control}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Go down one line}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3429\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Scroll Left}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Left one character}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3429\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Scroll Right}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Right one character}
\cell\row\pard \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par \pard\plain \ltrpar\s10\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ab\ltrch\dbch\af1\afs24\langfe1033\ab\loch\f1\fs24\lang1033\b {\loch\f1\fs16\lang1033\i0\b Modes:}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 These commands control modes}
\par 
\par \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Command}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Description}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Set insert mode}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Set overwrite mode}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Insert}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Toggle insert/overwrite}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + Shift + N}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Selection type is normal}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + Shift + C}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Selection type is column}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + Shift + L}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Selection type is line}
\cell\row\pard \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par \pard\plain \ltrpar\s10\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ab\ltrch\dbch\af1\afs24\langfe1033\ab\loch\f1\fs24\lang1033\b {\loch\f1\fs16\lang1033\i0\b Actions:}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 These commands perform various actions.}
\par 
\par 
\par \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Command}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Description}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + Shift + B}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Go to matching bracket}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + (number)}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Move to marker (number)}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + Shift + (number)}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Set marker (number)}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 F1}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Context sensitive help on word}
\cell\row\pard \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par \pard\plain \ltrpar\s10\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ab\ltrch\dbch\af1\afs24\langfe1033\ab\loch\f1\fs24\lang1033\b {\loch\f1\fs16\lang1033\i0\b Delete:}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 All the commands having to do with deleting shit.}
\par 
\par \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Command}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Description}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Backspace}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Character to left}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Shift + Backspace}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Delete}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Character to right}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + T}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Word to right}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + Backspace}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Word to left}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 From cursor to start of line}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + Shift + Y}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 From cursor to end of line}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + Y}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Current line}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Everything in editor}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Enter}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Line break at current position, move caret}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Shift + Enter}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + M}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + N}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Line break at current position, no move caret}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Insert character at curent position}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Alt + Backspace}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Perform undo if available}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + Z}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Perform undo if available}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Alt + Shift + Back}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Perform redo if available}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + Shift + Z}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Perform redo if available}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Shift + Delete}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Remove selection place on clipboard}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + X}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Remove selection place on clipboard}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Shift + Insert}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Move clipboard contents to current position}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + V}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Move clipboard contents to current position}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + Shift + I}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Move selection to right}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Control + Shift + U}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Move selection to left}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Tab}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Tab key}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt0\trpaddfl3\trpaddl28\trpaddfb3\trpaddb0\trpaddfr3\trpaddr28\cellx3393\cellx9406
\pard\intbl\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Shift + Tab}
\cell\pard\plain \intbl\ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 Tab to left}
\cell\row\pard \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote\ftnalt #\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Topic5}}}}
{\loch\f1\fs24\lang1033{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote\ftnalt $\pard\plain \ltrpar\s18\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs20\lang1036{\loch\f1\fs24\lang1033\i0\b0{\*\cs80\cf0{\*\updnprop5800}\up6\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 \tab }}{\loch\f1\fs20\lang1036{\lang1031\f7 Resources}}}}
}}{\loch\f1\fs16\lang1033Resources}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 Links:}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 \{button Bloodshed.net,ExecFile('http://www.bloodshed.net')\} The home of Bloodshed Software...}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 \{button Mingw.org,ExecFile('http://www.mingw.org')\} The home of the MinGW compiler...}
\par 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 \{button Dev-C++ Source Code,ExecFile('http://www.bloodshed.net/dev/')\} Dev-C++ source code...}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 \{button Mingw Source Code,ExecFile('http://www.xraylith.wisc.edu/~khan/software/gnu-win32')\} Dev-C++ source code...}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 {\loch\f1\fs16\lang1036\i0\b0 \{button Dev-C++ Software Forum,ExecFile('http://sourceforge.net/forum/forum.php?forum_id=48211')\} Dev-C++ Forum...}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1036 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 \{button Dev-C++ Developer Forum,ExecFile('https://sourceforge.net/forum/forum.php?forum_id=33286')\} Dev-C++ Developer Forum...}
\par 
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033{\super #{\footnote #\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  ID_GETTINGSTARTED}}}
{\loch\f1\fs24\lang1033{\*\cs79\cf0{\*\updnprop5800}\up6\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\afs24\langfe1033\loch\f1\fs24\lang1033 {\super ${\footnote $\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  Getting Started with Dev-C++}}}
{\super K{\footnote K\pard\plain \ltrpar\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\ltrch\dbch\loch\f1\fs24\lang1033 {\loch\f1\fs16\lang1033\i0\b0  theme;language;}}}
}}{\loch\f1\fs16\lang1033{\b\fs28\cf6 Getting Started}}
\par \pard\plain \ltrpar\s6\cf6{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs28\lang1033\ab\ltrch\dbch\afs28\langfe1036\ab\loch\fs28\lang1033\b 
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 When you launch Dev-C++ for the first time, you will see the following dialog :}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 \{bmc firsttime.bmp\}}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 You can select the language Dev-C++ will use, as well as the icon theme.}
\par {\loch\f1\fs16\lang1033\i0\b0 To add a XP flavor to Dev-C++, check the \lquote Use XP Theme\rquote  box.}
\par 
\par {\loch\f1\fs16\lang1033\i0\b0 If you installed a Dev-C++ version which include a Mingw compiler system, this is all you need to do to configure}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0  the software, since all compiler paths have been set to default. In this case you can then proceed to the {\lang1024{\uldb Basic Steps}}{\langfe1024\lang1024ID_CREATEPROJECT.}}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 
\par {\loch\f1\fs16\lang1033\i0\b0 However, if you prefer to use your own GCC distribution (like Cygwin), you can manually configure the compiler and }
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1036\loch\fs16\lang1033 {\loch\f1\fs16\lang1033\i0\b0 directories settings to feet your own system. You can do that in {\lang1024{\uldb Compiler Options}}{\langfe1024\lang1024ID_COMPILEROPTIONS.} }
\par \page\pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1024\loch\fs16\lang1024 {\loch\f1\fs16\lang1024\i0\b0 ID_CREATEPROJECT}
\par \pard\plain \ltrpar\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs16\lang1033\ltrch\dbch\afs16\langfe1024\loch\fs16\lang1024 
\par }